【问题标题】:getting rid of colons in URL using Apache mod_rewrite使用 Apache mod_rewrite 去除 URL 中的冒号
【发布时间】:2017-08-09 13:53:50
【问题描述】:

我有一个包含类似内容的 URL...

http://www.example.com/stuff/http://www.foobar.com

我希望将其传递给 index.php/stuff/http://www.foobar.com

我可以从那里解析它。如果我在 URL 中没有冒号,它可以正常工作。问题是...... Apache 似乎被冒号“:”字符卡住了,它导致了一个 Forbidden 错误;而且我不能只是“删除”冒号,因为它来自其他地方。

如果有什么不同,我会在 Windows 上运行 Apache。

需要帮助!提前谢谢你:)

【问题讨论】:

    标签: apache mod-rewrite


    【解决方案1】:

    这是 Windows 上 Apache 特有的问题,出于安全原因不允许使用冒号,不幸的是 Apache 发现了这一点,并在您进行任何重写之前提供了 403 Forbidden。

    https://bz.apache.org/bugzilla/show_bug.cgi?id=41441

    【讨论】:

      【解决方案2】:

      我怀疑是不是 Apache 造成了窒息——它可能是浏览器首先在解析 URL 时遇到了问题。

      这是一个无效的 URL - 第二个地址部分应该是 URL 编码的:

      http://www.example.com/stuff/http%3a%2f%2fwww.foobar.com
      

      如果可能,您应该相应地更改 URL 结构。

      【讨论】:

      • 我无法使用 url 编码的文本重写 URL...我正在获取从外部传入的 URL,这就是为什么我需要 Apache 将其翻译成有用的东西。浏览器没有问题 - 它可以正常访问 Web 服务器,但 Apache 正试图转换为无效的目录名称(我相信),这就是导致 Forbidden 错误的原因。
      • @Momo 很公平。在这种情况下,您使用的是什么 RewriteRules?
      猜你喜欢
      • 2010-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-10
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多