博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何调试Apache的URL重写(转载收藏)
阅读量:6478 次
发布时间:2019-06-23

本文共 1688 字,大约阅读时间需要 5 分钟。

对于Apache URL重写的调试,一直是比较头疼的问题,因为在服务器端并且没有debug工具。网上流行的方法就是用rewrite的日志文件,给virtualhost添加如下设置:

#Rewrite Log RewriteLog logs/drupal001.com-rewrite.log #此处可以写绝对地址 RewriteLogLevel 3

这样可以在Apache默认的日志文件的地方,(一般是/var/log/httpd/),如此以来,可以通过tail -f 的方式来刷新日志文件观察apache URL重写的基本过程。

但是这样的调试有很多弊端,

  1. Apache的RewriteLog指令只能在conf文件中,不能在.htaccess文件,所以必须具有root用户权限,并且修改后需要重启apache,对调试代理复杂性。
  2. 默认的日志位置 /var/log/httpd 也只能有root用户才能访问。
  3. 由于一次刷新网页的请求很多(如很多图片、js的请求),导致日志文件比较凌乱,查看也比较困难。

笔者在论坛里偶然发现一个比较特殊的方法,这种方法调试 URL Rewrite比较简单,此方法只需要在.htaccess即可完成调试。

其一,在.htaccess的 RewriteEngine on 后面添加如下代码

#Should use vardump in QueryRewriteCond %{QUERY_STRING} vardumpRewriteRule (.*) http://www.baidu.com/?host=%{HTTP_HOST},rurl=%{REQUEST_URI} [R=301,L,QSA]

这样,如果要调试某些变量,只需要在URL中加入vardump的query即可。

如:http://www.drupal001.com/?vardump

就会跳转到baidu.com,从URL后面的Query即可得到某些参数的值。

这里列出来默认的一些变量

#Apache variablesHTTP_USER_AGENTHTTP_REFERERHTTP_COOKIEHTTP_FORWARDEDHTTP_HOSTHTTP_PROXY_CONNECTIONHTTP_ACCEPT REMOTE_ADDRREMOTE_HOSTREMOTE_PORTREMOTE_USERREMOTE_IDENTREQUEST_METHODSCRIPT_FILENAMEPATH_INFOQUERY_STRINGAUTH_TYPE DOCUMENT_ROOTSERVER_ADMINSERVER_NAMESERVER_ADDRSERVER_PORTSERVER_PROTOCOLSERVER_SOFTWARE TIME_YEARTIME_MONTIME_DAYTIME_HOURTIME_MINTIME_SECTIME_WDAYTIME API_VERSIONTHE_REQUESTREQUEST_URIREQUEST_FILENAMEIS_SUBREQHTTPS

这样就可以轻松的打印出某些具体变量的值,以便检查我们的设置是否正确。

其二,我们可以单独使用下面一行代码

#Goto baiduRewriteRule (.*) http://www.baidu.com/?host=%{HTTP_HOST},rurl=%{REQUEST_URI} [R=301,L,QSA]

把这行代码放到我们想要的RewriteRule的前面,如果我们的RewriteCond验证成功,则当前URL就可以被跳转,否则,不跳转。这样可以轻松的检查我们书写的RewriteCond是否正确。

此方法虽然没有检查Log文件那样正规,但是实用也易用,不失为一种调试URL重写的好办法。


声明: 本站所有文章欢迎转载,所有文章未说明,均属于原创,转载均请注明出处。 

原文链接: 

转载于:https://www.cnblogs.com/CryOnMyShoulder/p/7325077.html

你可能感兴趣的文章
我的友情链接
查看>>
字符串替换空格
查看>>
我的友情链接
查看>>
jfinal 3.1 使用maven 导入sqljdbc4 jar包问题
查看>>
如何设计一款优秀的短视频 SDK
查看>>
android开发圆形头像
查看>>
fir.im Weekly - 关于 iOS10 适配、开发、推送的一切
查看>>
如何配置node.js安装环境
查看>>
如何使用vitrualBox共享文件夹
查看>>
【Regular—组】举个 组 应用的小例子。
查看>>
CFLAGS与CXXFLAGS、gcc与g++的区别
查看>>
怪怪的函数strtok
查看>>
IoC容器13——环境抽象
查看>>
我的友情链接
查看>>
Tomcat路径之谜
查看>>
SQL清除日志(转)
查看>>
下一代 Web 应用模型 —— Progressive Web App
查看>>
Apache2.2+MySql5.5+PHP5.4
查看>>
史上最详细最清楚的layoutSubView何时调用文章
查看>>
Android--多线程之Handler
查看>>