我已将.htaccess文件推送到生产服务器,但它们不起作用。下一步是重新启动,还是我应该检查其他内容。
我已将.htaccess文件推送到生产服务器,但它们不起作用。下一步是重新启动,还是我应该检查其他内容。
Answers:
重新启动不是要求更改为.htaccess。还有其他问题。
确保您的.htaccess包含以下语句
在RewriteEngine上
即使在httpd.conf中也有此要求。还要检查httpd进程是否可以读取.htaccess。
检查error_log- 如果正在使用.htaccess,它将告诉您任何错误。在.htaccess中放一个故意的语法错误是一项很好的检查,以确保文件正在使用中–您应该在同一目录中的任何页面上收到500错误。
最后,您可以在httpd.conf中使用以下命令启用重写日志:
RewriteLog“日志/ rewritelog”
RewriteLogLevel 7
这样生成的日志文件将为您详细介绍匹配的重写规则及其处理方式。
否:
Apache允许通过放置在Web树中的特殊文件来分散管理配置。通常会调用特殊文件
.htaccess
,但是可以在AccessFileName指令中指定任何名称...由于.htaccess文件是在每次请求时读取的,因此对这些文件所做的更改将立即生效...
从apache文档中:最常见的问题是未设置AllowOverride以使您的配置指令得到遵守。确保对于所涉及的文件范围没有有效的AllowOverride None。一个很好的测试方法是将垃圾放入.htaccess文件中并重新加载。如果未生成服务器错误,则几乎可以肯定,AllowOverride None有效。
我有同样的问题,PiedPiper关于AllowOverride的帖子似乎最有帮助。检查您的httpd.conf文件中的“ AllowOverride”,并确保将其设置为“全部”。
如果.htaccess无效,则不需要重新启动。可能的原因包括。
可能未设置 AllowOverride,该用户可以在httpd.conf中进行设置,或者可能必须与服务器管理员联系。
检查.htaccess的文件名,它应该是.htaccess而不是htaccess.txt 。有关如何创建文件的信息,请参见此处。
尝试使用Options -Indexes
或deny all
某种简单的指令来查看其是否有效。
如果具有重定向规则,则每次都清除浏览器缓存;如果缓存了先前的重定向,则每次清除浏览器缓存,似乎一切都没有用。
LogLevel alert rewrite:trace7
。后重新启动Apache的,你应该看到在error.log中希望有所帮助的痕迹。 http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html#logging