我的Apache2.2似乎是这样工作的:当我首先要求www.site.com/name
它正在寻找文件夹/name/
,如果没有找到,那么它正在搜索文件name.php
。URL重写 - 一些规则有效,其他一些不
但是,当我在.htaccess打开RewriteEngine On
并添加RewriteRule ^name$ name2.php
,然后阿帕奇仍然将寻找是否有文件夹或尽管重写规则的文件name
。
我该如何给RewriteRule优先?
我的Apache2.2似乎是这样工作的:当我首先要求www.site.com/name
它正在寻找文件夹/name/
,如果没有找到,那么它正在搜索文件name.php
。URL重写 - 一些规则有效,其他一些不
但是,当我在.htaccess打开RewriteEngine On
并添加RewriteRule ^name$ name2.php
,然后阿帕奇仍然将寻找是否有文件夹或尽管重写规则的文件name
。
我该如何给RewriteRule优先?
我发现溶液这里http://httpd.apache.org/docs/2.2/content-negotiation.html - “商谈中的Apache”段“在Multiviews”字幕:
多视图的效果如下:如果服务器接收用于/一些/目录/ foo的一个请求,如果/一些/目录已启用了多视图,和/一些/目录/ 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
将工作。