我在一个.htaccess
文件中有一个RewriteRule
,它什么也不做。如何对此进行故障排除?
.htaccess
文件是否正在被Apache读取和遵守?我可以写一个回显“它正在工作”的消息吗?如果我真的写了,那一行将在哪里回显?.htaccess
文件没有被使用,我如何让Apache使用它?.htaccess
,但我的RewriteRule
仍然没有效果,我还能做些什么来调试?发布于 2012-02-11 04:23:00
在你的.htaccess
中输入一些无用的值,例如foo bar
,sakjnaskljdnas
任何不被htaccess识别的关键字,然后访问你的网址。如果它工作正常,您应该获得一个
500内部服务器错误
内部服务器错误
服务器遇到内部错误或配置错误,无法完成您的请求...
我建议你把它放在RewriteEngine on
之后。
因为你在你的机器上。我假设你有访问apache .conf
文件的权限。
打开.conf
文件,查找类似于以下内容的行:
LoadModule rewrite_module modules/mod_rewrite.so
如果已注释(#),请取消注释并重新启动apache。
日志重写
RewriteEngine On
RewriteLog "/path/to/rewrite.log"
RewriteLogLevel 9
将上述3行代码放入您的virtualhost
。重新启动httpd。
使用较高的级别值会显著降低RewriteLogLevel 9
服务器的运行速度!使用级别大于2的重写日志文件仅用于调试!级别9将记录几乎所有重写日志的详细信息。
更新
Apache2.4中的情况发生了变化:
已删除RewriteLog和RewriteLog指令。现在可以通过使用LogLevel指令为mod_rewrite模块配置适当级别的日志记录来提供此功能。另请参阅mod_rewrite日志记录部分。
有关LogLevel的更多信息,请参阅LogLevel Directive
你可以完成
RewriteLog "/path/to/rewrite.log"
现在就以这种方式
LogLevel debug rewrite_module:debug
发布于 2014-02-13 22:58:10
“输入一些垃圾值”的回答对我来说并不管用,尽管输入了垃圾信息,我的网站仍在继续加载。
相反,我将以下行添加到.htaccess文件的顶部:
deny from all
这将快速让您知道.htaccess是否正在被使用。如果正在使用.htaccess,则根本不会加载该文件夹中的文件。
发布于 2013-05-05 05:06:33
通常,.htaccess中的任何更改都应该具有可见的效果。如果没有效果,请检查配置apache文件,如下所示:
<Directory ..>
...
AllowOverride None
...
</Directory>
应更改为
AllowOverride All
您还可以更改.htaccess文件中的指令。
https://stackoverflow.com/questions/9234289
复制相似问题