【问题标题】:Is it possible to handle such URL是否可以处理这样的 URL
【发布时间】:2010-05-27 17:11:02
【问题描述】:

http://www.example.com/http://www.test.com

我使用 .htaccess 尝试了许多不同的方法,但都没有成功。我需要将第二个 url 作为参数。是否可以将其重定向到 index.php 并将其作为$_SERVER["REQUEST_URI"] 或其他方法获取?谢谢

UPD:似乎无法获取整个 URL,无法识别问号。理想的例子:

127.0.0.1/http://www.test.com/script.php?a=hello&b=world#blabla;par2?%par3 

我需要输入我的 index.php 确切字符串

www.test.com/script.php?a=hello&b=world#blabla;par2?%par3

【问题讨论】:

  • 如果 URL 是 mysite.com/index.php?url=http://www.test.com 是否可以接受?如果是这样,使用 PHP 解析 URL 参数应该很容易。
  • 不是真的,如果我在地址栏输入mysite.com/http://www.test.com 我会得到403错误
  • 我想他想知道如何为 mod_rewrite 转义冒号/分号。
  • 是的,如果我尝试127.0.0.1/http//,分号会导致 403 错误 - 现在效果很好,但是我在 http 后面加上“:” - 它失败了

标签: .htaccess


【解决方案1】:

问题:

这是 ApacheWindows 上运行的问题。 Windows 上的 Apache 不允许您在 REQUEST URI 中使用冒号 (:)。这基本上是为了避免使用像 http://www.mysite.com/C:/SomeFile.exe 这样的 URL,但实际上很烦人。

如果同时使用mod_rewrite会被跳过。

您和某些应用程序(如维基百科)在 URL 中使用冒号 :。那么在 Windows 上的 Apache 中该怎么做呢?

解决方案:

在写这个答案的时候这个错误仍然存​​在并且没有绝对的解决方案,但是有一个技巧:

您可以将您的 URL 更改为以下内容: http://www.mysite.com/url/http://www.test.com

在此示例中,http://www.mysite.com/ 是您的 SCRIPT PATH/url/http://www.test.com 是您的 REQUEST URI

如果在 冒号 (:) 之前有一个斜杠 (/),问题就会消失。

【讨论】:

    【解决方案2】:

    【讨论】:

    • 尝试选项 2,但将最后一行更改为 RewriteRule ^/(.*) /index.php?url=$1 不是 index.php 的所有内容都将重定向到 index.php,传递指定为 get 参数 'url' 的 URL。
    • 第一个解决方案(在 ServerFault 上)不能完美运行:$1 无法处理“?”象征。这意味着如果我的 .htaccess 是 RedirectMatch 永久 ^/(?example.com/index.php?url=$1 并且我将请求 www.mysite.com/test.com/?par=1 - 它会削减 "?par=1"结果将是test.com
    【解决方案3】:

    您可以获取 URI,但只能没有片段,因为它不会传输到服务器。试试这个规则:

    RewriteRule ^http:/ index.php [L]
    

    然后请求的 URI 路径加上查询(因此从第三个 / 到第一个 # 或 URI 末尾的部分)在 $_SERVER['REQUEST_URI'] 可用。

    【讨论】:

    • 无论如何我收到 403(禁止访问)错误,这是因为 URL 中的冒号 (:)。我试试 127.0.0.1/test.com
    • @Vitaly:服务器的错误和访问日志说什么?
    • error_log 说“[Thu May 27 22:01:08 2010] [error] [client ::1] (20024)给定的路径格式错误或包含无效字符:无法映射 GET /@987654322 @ HTTP/1.1 到文件” access_log 说“127.0.0.1 - - [27/May/2010:21:03:17 +0300] “GET /hjh HTTP/1.1” 403 1175 “-” “Mozilla/5.0 ( Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.55 Safari/533.4"
    • @Vitaly:这似乎是 Windows 系统的一个已知问题(请参阅issues.apache.org/bugzilla/show_bug.cgi?id=41441)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-02
    相关资源
    最近更新 更多