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

时间:2008-09-27 00:08:05

标签: apache .htaccess mod-rewrite restart

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

7 个答案:

答案 0 :(得分:86)

.htaccess更改需要重启 。还有别的错误。

确保您的.htaccess包含声明

  

上的RewriteEngine

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

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

  

RewriteLog“logs / rewritelog”

     

RewriteLogLevel 7

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

答案 1 :(得分:51)

No

  

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

答案 2 :(得分:18)

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

答案 3 :(得分:3)

只有当将mod_rewrite模块添加到Apache。

如果更改任何Apache“.conf”文件,则只需重新启动Apache。

答案 4 :(得分:2)

我有同样的问题,似乎PiedPiper关于AllowOverride的帖子最有帮助。检查你的httpd.conf文件中的" AllowOverride"并确保将其设置为All。

答案 5 :(得分:2)

如果.htaccess不起作用,如果它不起作用,则不需要重启。

  • AllowOverride可能无法设置哪个用户可以在httpd.conf中设置,或者可能需要联系服务器管理员。

  • 检查.htaccess的文件名,它应该是.htaccess而不是htaccess.txt,请参阅here以获取如何创建的文件。

  • 尝试使用Options -Indexesdeny all种简单指令来查看它是否有效。

  • 每次清除浏览器缓存,如果有重定向或类似的规则,如果先前的重定向被缓存,则看起来好像不能正常工作。

答案 6 :(得分:0)

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

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