你是否必须重新启动Apache以使重写规则在.htaccess中生效?

我已经将我的.htaccess文件推送到生产服务器,但它们不起作用。 重新启动会是下一步,还是应该检查别的东西。

对.htaccess所做的更改不需要重新启动。 还有其他的错误。

确保您的.htaccess包含声明

重写引擎

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

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

RewriteLog“logs / rewritelog”

RewriteLogLevel 7

这样生成的日志文件将为您提供匹配哪些重写规则以及如何处理它们的血腥细节。

否 :

Apache允许通过放置在Web树内的特殊文件进行configuration的分散pipe理。 特殊文件通常称为.htaccess ,但任何名称都可以在AccessFileName指令中指定…由于每个请求都读取.htaccess文件,因此对这些文件所做的更改立即生效…

从apache文档:最常见的问题是,AllowOverride没有设置,以使您的configuration指令被尊重。 请确保没有AllowOverride None有效的文件范围有问题。 一个好的testing是将垃圾放入.htaccess文件并重新加载。 如果服务器错误没有生成,那么你几乎肯定会有AllowOverride None。

只有当你没有添加mod重写模块到Apache。

你只需要重新启动apache,如果你改变任何apache“.conf”文件

我有同样的问题,似乎PiedPiper后关于AllowOverride是最有帮助的。 检查你的httpd.conf文件中的“AllowOverride”,并确保它设置为全部。

什么在你的.htaccess中? 的RewriteRules? 检查mod_rewrite是否已安装并启用。

其他的东西? 尝试在该目录上将AllowOverride设置为“全部”。

在.htaccess的情况下,如果不能正常工作,则不需要重新启动原因包括。

  • AllowOverride可能不会设置哪个用户可以在httpd.conf中设置或者可能需要联系服务器admin。

  • 检查.htaccess的文件名应该是.htaccess而不是htaccess.txt请参阅这里指导如何创build一个。

  • 尝试使用Options -Indexesdeny alltypes的简单指令来查看它是否工作。

  • 清除浏览器caching每次如果有redirect规则或类似的,如果以前的redirectcaching它看起来好像事情不工作。