使用Apache mod_rewrite发现错误

时间:2015-04-27 17:56:10

标签: apache .htaccess mod-rewrite

最近我使用Apache RewriteEngine(mod-rewrite)尝试重写这个文件:

api.access.php

到这个目录:

/api

使用此RewriteRule:

RewriteRule ^api$ api.access.php [L,QSA]

但它一直都失败了。

奇怪的是,用/api之类的其他字符串替换/apis。那问题是什么?

2 个答案:

答案 0 :(得分:3)

实际上这不是一个真正的错误。 Apache很长时间都经过了很好的测试。您可能遇到的是content NegotiationMultiViews.这可能会导致一些有趣的业务。

所以你的答案对任何人都没有帮助,因为更改文件名不是解决方案。您可能只需要禁用MultiViews

Options -MultiViews
RewriteEngine on
RewriteRule ^api/?$ api.access.php [L,QSA]

更多关于MultiViews

  

MultiViews的效果如下:如果服务器收到了   请求/ some / dir / foo,如果/ some / dir启用了MultiViews,并且   / some / dir / foo不存在,然后服务器读取目录   寻找名为foo。*的文件,并有效地伪造一个类型地图   它命名所有这些文件,为它们分配相同的媒体类型和   如果客户要求其中一个,它将具有内容编码   他们的名字。然后它选择与客户的最佳匹配   要求。

答案 1 :(得分:0)

问题原来是我尝试替换的文件的名称(api.access.php),因为它始于api

将文件名更改为access.api.php修复它。

希望这对任何人都有用。

干杯