【问题标题】:Found bug using Apache mod_rewrite使用 Apache mod_rewrite 发现错误
【发布时间】:2015-04-27 17:56:10
【问题描述】:

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

api.access.php

到这个目录:

/api

使用这个重写规则:

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

但它一直失败。

奇怪的是,用 /apis 之类的其他字符串替换 /api 有效。那么问题出在哪里?

【问题讨论】:

    标签: apache .htaccess mod-rewrite


    【解决方案1】:

    实际上,这并不是真正的错误。 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.* 的文件,并有效地伪造类型映射 它命名所有这些文件,为它们分配相同的媒体类型和 如果客户要求其中之一,它将具有的内容编码 他们的名字。然后它选择与客户的最佳匹配 要求。

    【讨论】:

      【解决方案2】:

      问题原来是我试图替换的文件的名称 (api.access.php),因为它以 api 开头。

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

      希望这对那里的任何人都有用。

      干杯

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-01
        • 2020-05-22
        • 1970-01-01
        • 1970-01-01
        • 2011-11-10
        • 1970-01-01
        相关资源
        最近更新 更多