【发布时间】:2010-09-13 15:24:19
【问题描述】:
我已将 .htaccess 文件推送到生产服务器,但它们不起作用。下一步是重新启动,还是我应该检查其他内容。
【问题讨论】:
标签: apache .htaccess mod-rewrite restart
我已将 .htaccess 文件推送到生产服务器,但它们不起作用。下一步是重新启动,还是我应该检查其他内容。
【问题讨论】:
标签: apache .htaccess mod-rewrite restart
No:
Apache 允许通过放置在网络树中的特殊文件来分散管理配置。特殊文件通常称为
.htaccess,但可以在AccessFileName 指令中指定任何名称...由于每个请求都会读取.htaccess 文件,因此对这些文件所做的更改会立即生效...
【讨论】:
您的 .htaccess 中有什么内容?重写规则?检查 mod_rewrite 是否已安装并启用。
其他东西?尝试在该目录上将 AllowOverride 设置为“全部”。
【讨论】:
仅当您没有将 mod_rewrite 模块添加到 Apache。
如果您更改任何 Apache “.conf” 文件,您只需要重新启动 Apache。
【讨论】:
来自 apache 文档: 最常见的问题是未设置 AllowOverride 以使您的配置指令得到遵守。确保您没有对相关文件范围有效的 AllowOverride None。对此的一个很好的测试是将垃圾放入您的 .htaccess 文件并重新加载。如果未生成服务器错误,则几乎可以肯定 AllowOverride None 有效。
【讨论】:
对 .htaccess 的更改不需要重新启动。还有其他问题。
确保您的 .htaccess 包含该语句
重写引擎开启
这是必需的,即使它也存在于 httpd.conf 中。还要检查 httpd 进程是否可以读取 .htaccess。
检查 error_log - 它会告诉您 .htaccess if 中正在使用的任何错误。
在 .htaccess 中故意设置语法错误是一个很好的检查,以确保文件正在被使用——您应该在同一目录中的任何页面上收到 500 错误。
最后,您可以在 httpd.conf 中使用如下命令启用重写日志:
RewriteLog "日志/重写日志"
重写日志级别 7
由此生成的日志文件将为您提供匹配的重写规则以及如何处理它们的详细信息。
【讨论】:
LogLevel alert rewrite:trace7。 restarting apache 后,应该会在error.log 中看到痕迹,希望对您有所帮助。 http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html#logging
我有同样的问题,似乎 PiedPiper 关于 AllowOverride 的帖子最有帮助。检查您的 httpd.conf 文件中的“AllowOverride”并确保它设置为 All。
【讨论】:
如果 .htaccess 无法正常工作,则不需要重新启动,可能的原因包括。
AllowOverride 可能无法设置哪个用户可以在 httpd.conf 中设置,或者可能需要联系服务器管理员。
检查 .htaccess 的文件名,它应该是 .htaccess 而不是 htaccess.txt 参见here 以获取如何创建的指南。
尝试使用Options -Indexes 或deny all 之类的简单指令,看看它是否有效。
如果有重定向规则或类似规则,则每次清除浏览器缓存,如果缓存了先前的重定向,则看起来好像事情不正常。
【讨论】: