101

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

4

7 回答 7

99

更改 .htaccess 不需要重新启动。还有什么不对劲的。

确保您的 .htaccess 包含该语句

重写引擎开启

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

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

重写日志“日志/重写日志”

RewriteLogLevel 7

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

于 2008-09-27T02:25:22.587 回答
52

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

于 2008-09-27T00:12:29.397 回答
18

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

于 2008-09-27T00:31:15.170 回答
4

仅当您尚未将 mod_rewrite 模块添加到 Apache 时。

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

于 2008-09-27T00:28:50.323 回答
2

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

于 2011-07-01T17:54:10.547 回答
2

如果 .htaccess 不起作用,则不需要重新启动,可能的原因包括。

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

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

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

  • 如果有重定向规则或类似规则,则每次清除浏览器缓存,如果缓存了先前的重定向,则看起来好像事情不起作用。

于 2017-04-29T11:09:17.990 回答
0

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

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

于 2008-09-27T00:27:55.333 回答