首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何调试.htaccess RewriteRule不工作

如何调试.htaccess RewriteRule不工作
EN

Stack Overflow用户
提问于 2012-02-11 04:18:51
回答 9查看 128K关注 0票数 120

我在一个.htaccess文件中有一个RewriteRule,它什么也不做。如何对此进行故障排除?

  • 如何验证.htaccess文件是否正在被Apache读取和遵守?我可以写一个回显“它正在工作”的消息吗?如果我真的写了,那一行将在哪里回显?
  • 如果.htaccess文件没有被使用,我如何让Apache使用它?
  • 如果正在使用.htaccess,但我的RewriteRule仍然没有效果,我还能做些什么来调试?
EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2012-02-11 04:23:00

在你的.htaccess中输入一些无用的值,例如foo barsakjnaskljdnas任何不被htaccess识别的关键字,然后访问你的网址。如果它工作正常,您应该获得一个

500内部服务器错误

内部服务器错误

服务器遇到内部错误或配置错误,无法完成您的请求...

我建议你把它放在RewriteEngine on之后。

因为你在你的机器上。我假设你有访问apache .conf文件的权限。

打开.conf文件,查找类似于以下内容的行:

代码语言:javascript
复制
LoadModule rewrite_module modules/mod_rewrite.so

如果已注释(#),请取消注释并重新启动apache。

日志重写

代码语言:javascript
复制
RewriteEngine On
RewriteLog "/path/to/rewrite.log"
RewriteLogLevel 9

将上述3行代码放入您的virtualhost。重新启动httpd。

使用较高的级别值会显著降低RewriteLogLevel 9服务器的运行速度!使用级别大于2的重写日志文件仅用于调试!级别9将记录几乎所有重写日志的详细信息。

更新

Apache2.4中的情况发生了变化:

来自Upgrading to 2.4 from 2.2

已删除RewriteLogRewriteLog指令。现在可以通过使用LogLevel指令为mod_rewrite模块配置适当级别的日志记录来提供此功能。另请参阅mod_rewrite日志记录部分。

有关LogLevel的更多信息,请参阅LogLevel Directive

你可以完成

代码语言:javascript
复制
RewriteLog "/path/to/rewrite.log"

现在就以这种方式

代码语言:javascript
复制
LogLevel debug rewrite_module:debug
票数 151
EN

Stack Overflow用户

发布于 2014-02-13 22:58:10

“输入一些垃圾值”的回答对我来说并不管用,尽管输入了垃圾信息,我的网站仍在继续加载。

相反,我将以下行添加到.htaccess文件的顶部:

代码语言:javascript
复制
deny from all

这将快速让您知道.htaccess是否正在被使用。如果正在使用.htaccess,则根本不会加载该文件夹中的文件。

票数 54
EN

Stack Overflow用户

发布于 2013-05-05 05:06:33

通常,.htaccess中的任何更改都应该具有可见的效果。如果没有效果,请检查配置apache文件,如下所示:

代码语言:javascript
复制
<Directory ..>
    ...
    AllowOverride None
    ...
</Directory>

应更改为

代码语言:javascript
复制
AllowOverride All

您还可以更改.htaccess文件中的指令。

票数 34
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9234289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档