【问题标题】:Is there some Apache config that can filter out double-slash from URL?是否有一些 Apache 配置可以从 URL 中过滤掉双斜杠?
【发布时间】:2011-02-17 13:26:28
【问题描述】:

我有网络软件,我需要这样的网址

http://site.com/page/var1/val1/var2//var3/val3

然后我在 .htaccess 中捕获这些 URL,重定向到一个 php 文件,然后将其解析为 $_GET 并将所有内容转发到主应用程序。双斜线很重要,它意味着 var2 已设置并包含一个空值,即 $var2!==NULL。

在某些服务器上它按预期工作,但在某些服务器上却没有,URL 被静默转换为

http://site.com/page/var1/val1/var2/var3/val3

这当然会破坏一切,因为它会将其解析为 $var1='val1', $var2='var3', $val3=''。

不幸的是,我已经无法访问其中一台服务器,而且我不记得 100% 是否是 Apache,但我们假设它是 Apache,因为这是我们大部分时间处理的服务器。

可能有一些配置可以控制它吗?这将打开/关闭双斜线的清理。

【问题讨论】:

  • 也许你应该想出一个不依赖格式错误的 URI 来操作的 URL 方案。
  • 双斜杠算作无效网址?

标签: apache mod-rewrite url-rewriting


【解决方案1】:

Apache 在将这些空路径段映射到文件系统之前将其剥离。要在 mod_rewrite 中获取原始请求的 URI,请检查 %{THE_REQUEST} 中的请求行:

RewriteCond %{THE_REQUEST} ^GET\ (/[^?\ ]*)
RewriteRule …

然后您可以引用RewriteCond%1 的匹配项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-14
    • 2011-06-25
    • 2015-03-19
    • 1970-01-01
    • 2012-06-19
    • 1970-01-01
    • 1970-01-01
    • 2019-09-03
    相关资源
    最近更新 更多