修改.htaccess的重写规则

来源:互联网 发布:python excel数据处理 编辑:程序博客网 时间:2024/06/01 07:57

在修复公司项目的时候,遇到一个问题:
点击主页面的login按钮,前往另一个登录页面的时候。
地址栏重复出现:

http://127.0.0.1/sr/127.0.0.1/sr/login/127.0.0.1/oir/127.0.0.1/oir/127.0.0.1/oir/127.0.0.1/oir/127.0.0.1/oir/127.0.0.1/oir/127.0.0.1/oir/127.0.0.1/oir/127.0.0.1/oir/127.0.0.1/oir/127.0.0.1/oir/127.0.0.1/oir/127.0.0.1/oir/127.0.0.1/oir/127.0.0.1/oir/127.0.0.1/oir/127.0.0.1/oir/127.0.0.1/oir/127.0.0.1/oir/Oops  

这样的错误。
在网上讨教了高人以后,指示我去看apache的error_log。觉得这一招真的很不错,是debug的重要步骤。这招赶紧学起来。然后在测试服务器的log上看到一个值得注意的地方:

Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.  

在网上查看了一下这个问题,提到要用LogLevel去做debug。

我在正式服务器上也找了一下,也发现了一模一样的error。看来这个地方跟那个重复的url有关。

参考这个http://40era.com/1718/ 资料以后,发现在httpd.conf文件里添加以下这两句之后,apache无法正常重启。估计是apache新版本更新屏蔽了。

RewriteLogLevel 3RewriteLog "/var/log/httpd/rewrite.log"

于是删掉这两句,继续查找可以查看log的相关设置。在stackoverflow里面找到了apache官网的资料:
http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html#logging

LogLevel alert rewrite:trace3

将这句加入以后,apache重启成功。然后到logs/error.log下面查看这个trace3打印出来的错误。如上面那个40era所说的,有url的重复。因为是搭建在本地环境。都是127.0.0.1。所以我在.htaccess里加入了这句话:

RewriteCond %{HTTP_HOST} !^127.0.0.1 [NC] 

然后再重启了apache。发现那条错误消失了。而且我回到首页点击login登陆按钮的时候,竟然可以进入那个项目的登录页面!只不过没有css样式,图片以及还是load不到js库。不过不会像之前一样回到主页面而且url重复。url显示也正常。真是一个不小的进展。

然而还剩下一个问题就是依然load不到css/img/js这三个。看来还是跟.htaccess有关。继续查看相应的措施。

找到出问题的地方了。
在最外围的htaccess,原来的$会自动更改为#,一旦更改为后者,css/js/img这些原来位于public文档下的就会失效。

被修改的.htaccess内容如下(带#):

<IfModule mod_rewrite.c>    RewriteEngine on    RewriteRule  ^# apg/public/    [L]    RewriteRule  (.*) apg/public/#1 [L]</IfModule>

正常的.htaccess应该为(带$):

<IfModule mod_rewrite.c>    RewriteEngine on    RewriteRule  ^$ apg/public/    [L]    RewriteRule  (.*) apg/public/$1 [L]</IfModule>

然后开始艰苦卓绝的继续查error_log工程……

最后同事帮我解决了这个问题,说是apache底层服务的某几个so模块被我重启apache太多次弄坏了。所以导致htaccess的重定向异常。他重新编译了那几个so模块。就修复了这个问题。整个apache都被他扒光了一个个地排查。他说这是他第一次遇到这种问题。真是服了我了。

总而言之。问题解决了好开心,撒花!

0 0