我们今天被迫升级到Apache 2,一旦我们的规则集工作了几个月就停止了工作。
它显示的行为完全忽略.htacess,即使在我们删除它(.htacess)之后,服务器似乎也使用了“幻像”规则。
IE:site / stuff /没有.htacess应该显示404 ...但是它会转到site / stuff.php(根本没有.htacess!)
使用 .htacess已启用 site / stuff / 1 /应该去site / stuff.php?var = 1而不是去site / stuff.php
任何帮助表示赞赏,这让我们感到疯狂。
答案 0 :(得分:4)
我猜这是Apache配置问题。
您的主httpd.conf可能已将AllowOverride指令的默认值设置为None
。这是一组限制性权限,可提高性能和安全性,但这意味着Apache完全忽略任何.htaccess文件。
您需要在主Apache配置文件或AllowOverride
指令内为您的服务目录启用VirtualHost
。您可以通过指定
AllowOverride All
在<VirtualHost>
或<Directory>
区块内。
编辑(回应评论)
如果没有更多信息,诊断将非常困难。如果您可以提供更多详细信息,那可能会有所帮助。您的网址似乎正在被重写,因此您可以尝试启用mod_rewrite debugging以查看规则的应用方式:
<IfModule mod_rewrite.c>
RewriteLog "/path/to/rewrite.log"
RewriteLogLevel 3
</IfModule>
第二次编辑 - 多视图
重新阅读问题描述后,我认为您可能会遇到MultiViews的问题。这听起来与我发现的this thread非常相似。尝试在<VirtualHost>
或<Directory>
下禁用MultiView,他们可能会违反您的重写规则。