我们是否需要重新启动apache才能使.htaccess中的重写规则生效?
时间:2020-03-06 14:48:53 来源:igfitidea点击:
我已将我的.htaccess文件推送到生产服务器,但它们不起作用。下一步将是重新启动,还是我应该检查其他内容。
解决方案
不:
Apache allows for decentralized management of configuration via special files placed inside the web tree. The special files are usually called .htaccess, but any name can be specified in the AccessFileName directive... Since .htaccess files are read on every request, changes made in these files take immediate effect...
.htaccess中有什么?重写规则?检查是否已安装并启用了mod_rewrite。
其他的东西?尝试在该目录上将AllowOverride设置为'all'。
仅当我们尚未将mod_rewrite模块添加到Apache时。
仅当我们更改任何Apache" .conf"文件时,才需要重新启动Apache。
从apache文档中:
最常见的问题是,未设置AllowOverride以使配置指令得到遵守。确保对于所涉及的文件范围,我们没有有效的AllowOverride None。一个很好的测试方法是将垃圾放入.htaccess文件中,然后重新加载。如果未生成服务器错误,则几乎可以肯定的是,AllowOverride None无效。
.htaccess的更改不需要重新启动。还有其他问题。
确保.htaccess包含以下语句
RewriteEngine on
即使在httpd.conf中也有此要求。还要检查httpd进程是否可以读取.htaccess。
检查error_log,如果它正在使用,它将告诉我们.htaccess中的任何错误。
在.htaccess中放一个故意的语法错误是一项很好的检查,以确保文件正在使用中-我们应该在同一目录中的任何页面上收到500错误。
最后,我们可以在httpd.conf中使用以下命令启用重写日志:
RewriteLog "logs/rewritelog" RewriteLogLevel 7
这样生成的日志文件将为我们详细介绍匹配的重写规则及其处理方式。