• 如何调试Apache的URL重写(转载收藏)


    对于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的请求),导致日志文件比较凌乱,查看也比较困难。

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

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

     #Should use vardump in Query
    RewriteCond %{QUERY_STRING} vardump
    RewriteRule (.*) 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默认的一些变量

     #Apache variables
    HTTP_USER_AGENT
    HTTP_REFERER
    HTTP_COOKIE
    HTTP_FORWARDED
    HTTP_HOST
    HTTP_PROXY_CONNECTION
    HTTP_ACCEPT
     
    REMOTE_ADDR
    REMOTE_HOST
    REMOTE_PORT
    REMOTE_USER
    REMOTE_IDENT
    REQUEST_METHOD
    SCRIPT_FILENAME
    PATH_INFO
    QUERY_STRING
    AUTH_TYPE
     
    DOCUMENT_ROOT
    SERVER_ADMIN
    SERVER_NAME
    SERVER_ADDR
    SERVER_PORT
    SERVER_PROTOCOL
    SERVER_SOFTWARE
     
    TIME_YEAR
    TIME_MON
    TIME_DAY
    TIME_HOUR
    TIME_MIN
    TIME_SEC
    TIME_WDAY
    TIME
     
    API_VERSION
    THE_REQUEST
    REQUEST_URI
    REQUEST_FILENAME
    IS_SUBREQ
    HTTPS

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

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

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

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

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


    声明: 本站所有文章欢迎转载,所有文章未说明,均属于原创,转载均请注明出处。 
    原文链接: http://www.drupal001.com/2012/05/apache-rewrite-url-debug/ 

  • 相关阅读:
    幸福
    华仔andylau
    计算机常用英语术语、词汇表
    新年新气象
    韶关二日游

    圣诞由来
    哈哈,今天起DK的blog也有隐私了^^
    POJ 2752 Seek the Name, Seek the Fame
    POJ 2406 Power Strings
  • 原文地址:https://www.cnblogs.com/CryOnMyShoulder/p/7325077.html
Copyright © 2020-2023  润新知