.htaccess 有可能处理这样的URL吗

.htaccess 有可能处理这样的URL吗,.htaccess,.htaccess,我使用.htaccess尝试了许多不同的方法,但运气不佳。我需要得到第二个url作为参数。是否可以将其重定向到index.php并作为$\u服务器[“REQUEST\u 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/sc

我使用.htaccess尝试了许多不同的方法,但运气不佳。我需要得到第二个url作为参数。是否可以将其重定向到index.php并作为
$\u服务器[“REQUEST\u 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

这绝对有可能:


至于如何获取,已经有了

您可以获取URI,但只有在没有片段的情况下才能获取,因为该片段不会传输到服务器。试试这个规则:

RewriteRule ^http:/ index.php [L]

然后,请求的URI路径加上查询(因此从第三个
/
到第一个
或URI结尾的部分)可以在
$\u服务器['REQUEST\u URI']

上找到问题:

这是在Windows上运行Apache时出现的问题。Windows上的Apache不允许在请求URI中使用冒号(
)。这基本上是为了避免像这样的URL,但实际上很烦人

如果同时使用
mod_rewrite
,则将跳过此操作

您和一些应用程序(如wikipedia)在URL中使用冒号
。那么,在Windows上的Apache中该怎么做呢

解决方案:

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

您可以将URL更改为以下内容:

在本例中
http://www.mysite.com/
是您的脚本路径
/url/http://www.test.com
是您的请求URI


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

如果URL为?如果是这样,用PHP解析URL参数应该很容易。不是这样,如果我键入地址栏,我会得到403个错误。我想他想知道如何转义冒号/分号以进行mod_rewrite。是的,分号导致403错误,如果我尝试的话-现在效果很好,但我输入了“:”在http之后-它会导致选项2失败,但将最后一行更改为
RewriteRule^/(.*)/index.php?url=$1
所有非index.php的内容都将重定向到index.php,并传递指定为get参数“url”的url。第一个解决方案(在ServerFault上)无法完美工作:$1无法处理“?”符号。这意味着如果我的.htaccess是RedirectMatch permanent^/(?无论如何,我得到403(禁止访问)错误,那是因为URL中的冒号(:)。我尝试127.0.0.1/@Vitaly:服务器的错误和访问日志说什么?错误日志说“[Thu May 27 22:01:08 2010][error][client::1](20024)给定的路径格式错误或包含无效字符:无法将GET/HTTP/1.1映射到文件“access_log says”127.0.0.1---[27/May/2010:21:03:17+0300]“GET/HTTP/1.1”403 1175“-”Mozilla/5.0(Windows;U;Windows NT 6.1;en US)AppleWebKit/533.4(KHTML,如Gecko)Chrome/5.0.375.55 Safari/533.4“@Vitaly:这似乎是Windows系统的一个已知问题(请参阅)。