您是否必须重新启动apache才能在.htaccess生效中重写规则?

Jes*_*ugh 94 apache .htaccess mod-rewrite restart

我已将.htaccess文件推送到生产服务器,但它们不起作用.重启是下一步,还是应该检查其他内容.

Tom*_*omG 89

在这里重新启动要求更改为.htaccess.还有别的错.

确保您的.htaccess包含该声明

RewriteEngine on

这是必需的,即使它也存在于httpd.conf中.还要检查.htaccess是否可由httpd进程读取.
检查error_log - 如果正在使用它,它会告诉你.htaccess中的任何错误.在.htaccess中添加有意的语法错误是一个很好的检查,以确保文件正在使用 - 您应该在同一目录中的任何页面上得到500错误.

最后,您可以使用httpd.conf中的以下命令启用重写日志:

RewriteLog"logs/rewritelog"

RewriteLogLevel 7

这样生成的日志文件将为您提供关于哪些重写规则匹配以及如何处理它们的详细信息.

  • 这有点过时了。我遇到了类似的问题,并想调试特定用例的重写。我尝试了这种方法,但是经过一番挫折和挖掘之后,我发现了问题所在。这是针对较旧版本的apache。对于apache2.4>将上面的RewriteLog&LogLevel替换为:`LogLevel alert rewrite:trace7`。**重新启动apache **之后,您应该在error.log中看到跟踪。希望对您有所帮助。[http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html#logging](http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html#logging) (2认同)

Mil*_*dev 52

:

Apache允许通过放置在Web树中的特殊文件来分散管理配置.通常会调用特殊文件.htaccess,但可以在AccessFileName指令中指定任何名称...由于每次请求都会读取.htaccess文件,因此对这些文件所做的更改会立即生效...


Pie*_*per 18

从apache文档:最常见的问题是,未设置AllowOverride以使您的配置指令得到遵守.确保您没有对相关文件范围有效的AllowOverride无效.对此进行的一个很好的测试是将垃圾放入.htaccess文件并重新加载.如果未生成服务器错误,则几乎肯定会使AllowOverride无效.

  • 我将此行"<directory /> </ directory>"添加到我的.htaccess中以在日志中生成错误.它会说"<目录不允许在这里",我知道它正在读取我的文件. (2认同)