Windows服务器,运行Apache。 在我的Apache conf中,我有一个站点的根的AllowOverride None ,然后我有一个子目录设置为AllowOverride All :
<Directory /> AllowOverride None </Directory> <Directory "/safe/"> AllowOverride All </Directory>
但是,当我尝试在子目录的.htaccess文件中设置一个重写规则时,什么也没有发生,我只是得到一个404页面未find错误。 例:
RewriteEngine On RewriteRule (.*) /blah?test=$1 [R=302,NC,NE,L]
通过Apache conf重写URL可以正常工作。 我不明白为什么这个规则会被忽略。 我不想在conf中重写URL,因为在这种情况下,我可能需要不断地改变redirect,并且不希望在每次更改时重新加载服务器。 我也不想通过在站点范围内启用.htaccess文件来影响服务器的性能,只是在我需要的子目录中。
注意Apacheconfiguration中的目录和位置标签,它们具有不同的含义。 目录在URI上的文件系统和位置上工作。
如果你正在谈论这样的url: http : //example.com/safe/index.html你应该这样做:
<Location /safe> AllowOverride All </Location>