URL重写 - 一些规则有效,另一些则无效

时间:2013-04-03 04:11:23

标签: apache url-rewriting apache2 rewrite httprequest

我的Apache2.2似乎是这样的:当我首先请求www.site.com/name它正在查找文件夹/name/时,如果找不到,则接下来它正在搜索文件name.php。< / p>

但是当我打开.htaccess中的RewriteEngine On并添加RewriteRule ^name$ name2.php时,Apache仍会查看是否存在文件夹或文件name,尽管有RewriteRule。

如何给予RewriteRule优先权?

1 个答案:

答案 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 将起作用