【问题标题】:mod_rewrite 'add path info postfix:'mod_rewrite '添加路径信息后缀:'
【发布时间】:2009-01-13 14:54:59
【问题描述】:

为什么我的 mod_rewrite 会这样?

add path info postfix: /home/mobelluk/public_html/about.php -> /home/mobelluk/public_html/about.php/

这会导致所有内容都出现不需要的尾部斜杠。

我已禁用我的所有 .htaccess 规则,因此它们不在等式中。

【问题讨论】:

    标签: apache mod-rewrite


    【解决方案1】:

    显然在某些情况下 mod_rewrite 重新附加后修复部分存在问题 https://issues.apache.org/bugzilla/show_bug.cgi?id=38642

    问题:

    如果 .htaccess 文件中的多个 RewriteRules 匹配,则 PATH_INFO 的不需要的副本可能会累积在 URI 的末尾。

    如果您使用的是 Apache 2.2.12 或更高版本,则可以使用 DPI 标志来防止这种情况发生 http://httpd.apache.org/docs/2.2/rewrite/flags.html

    【讨论】:

    • DPI 标志基本上意味着“修复 mod_rewrite 错误”。如果你不想被这个错误发现,你应该在你写的每一个RewriteRule 中使用它。
    【解决方案2】:

    在搜索“添加路径信息后缀”时,首先出现了这个问题,虽然它最终确实解决了我的问题,但我花了将近 2 个小时才明白发生了什么。 在网站上工作时,我需要重写:

    /resources/band/ -> resources.html?section=band
    

    完成了这个 mod_rewrite:

    RewriteRule ^resources/(.*)/$ resources.html?section=$1 [L]
    

    将其更改为 [DPI] 没有任何效果...我的 resources.html 页面上的代码肯定 100% 被调用,但 section=band 的参数没有被发送给它。

    获取这个...如果您发现 Apache 的文档无法阅读,Multiviews 就是问题所在。当浏览器看到多视图在服务器上时,会看到 /resources/band/ 并说“哦,我真聪明,我知道那是什么意思!”并重定向:

    /resources/band/ -> /resources.html/band/
    

    真实故事!我在虚拟主机上将 +Multiviews 更改为 -Multiviews - 问题立即解决。

    【讨论】:

    • 你今天让我免于痛苦。经过长时间的调试,这是最后一块石头。干得好。
    【解决方案3】:

    是否有可能新服务器加载了mod_dir,而旧服务器没有加载DirectorySlash On,这导致了这个问题?

    (请注意,如果 mod_dir 已加载并且没有任何内容覆盖它,则 DirectorySlash On 是默认值)

    【讨论】:

    • 我试过了,但是检查我的日志文件显示它是打开还是关闭都没有区别。非常感谢。
    【解决方案4】:

    我通过在我的虚拟主机选项配置中禁用多视图解决了这个问题。我正在重写类似于下面的内容:

    希望重写:

    /dir/ -> /dir.html
    

    实际翻译:

    /dir/ -> /dir.html (MultiViews)
    /dir.html -> /dir.html/ (mod_rewrite: 404, didn't exist)
    

    禁用多视图会阻止初始翻译发生。我本可以调整重写规则来弥补这一点,但我并没有将 MultiViews 用于其他任何事情。

    以下帖子向我提示了这个问题: https://velenux.wordpress.com/2012/07/17/apache-mod_rewrite-multiple-add-path-info-postfix/#comment-1476

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-30
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-11
      • 1970-01-01
      相关资源
      最近更新 更多