zoukankan      html  css  js  c++  java
  • 如何调试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/ 

  • 相关阅读:
    LeetCode——Generate Parentheses
    LeetCode——Best Time to Buy and Sell Stock IV
    LeetCode——Best Time to Buy and Sell Stock III
    LeetCode——Best Time to Buy and Sell Stock
    LeetCode——Find Minimum in Rotated Sorted Array
    Mahout实现基于用户的协同过滤算法
    使用Java对文件进行解压缩
    LeetCode——Convert Sorted Array to Binary Search Tree
    LeetCode——Missing Number
    LeetCode——Integer to Roman
  • 原文地址:https://www.cnblogs.com/CryOnMyShoulder/p/7325077.html
Copyright © 2011-2022 走看看