我的Apache2.2似乎是这样的:当我首先请求www.site.com/name
它正在查找文件夹/name/
时,如果找不到,则接下来它正在搜索文件name.php
。< / p>
但是当我打开.htaccess中的RewriteEngine On
并添加RewriteRule ^name$ name2.php
时,Apache仍会查看是否存在文件夹或文件name
,尽管有RewriteRule。
如何给予RewriteRule优先权?
答案 0 :(得分:0)
我在这里找到了解决方案http://httpd.apache.org/docs/2.2/content-negotiation.html - “Apache中的谈判”部分,“多视图”字幕:
MultiViews的效果如下:如果服务器收到/ some / dir / foo的请求,如果/ some / dir启用了MultiViews,并且/ some / dir / foo不存在,那么服务器会读取目录查找名为foo。*(...)
的文件
所以在我的情况下(我使用mod_userdir),我编辑了/etc/apache2/mods-enabled/userdir.conf
<IfModule mod_userdir.c>
(...)
<Directory /home/*public_html>
(...)
#Options MultiViewes # I COMMENTED OUT THIS OPTION
</Directory>
</IfModule>
现在,如果我请求www.domain.com/foo
apache 将不会在目录中搜索名为foo
的文件!从现在开始,RewriteRule ^name$ another-name.php
将起作用。