2010-05-27 96 views
3

http://www.example.com/http://www.test.com是否可以处理这样的URL

我已经尝试了许多不同的方法使用.htaccess没有运气。我需要得到第二个url作为参数。是否有可能将其重定向到index.php并将其作为$_SERVER["REQUEST_URI"]或其他方法?谢谢

UPD:看起来像是不可能获得整个网址,问号不被识别。理想的例子:

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 
+0

如果URL是http://www.mysite.com/index.php?url=http://www.test.com,可以接受吗?如果是这样,解析URL参数应该很容易与PHP一起工作。 – 2010-05-27 17:13:47

+1

不是真的,如果我输入地址栏http://www.mysite.com/http://www.test.com我会得到403错误 – 2010-05-27 17:17:40

+0

我想他想知道如何为mod_rewrite逃离冒号/分号。 – 2010-05-27 17:19:14

回答

2

这是绝对有可能:http://downforeveryoneorjustme.com/http://www.google.com/

至于如何,它已经covered on ServerFault已经

+0

尝试选项2,但更改最后一行到 'RewriteRule^/(。*)/index.php?url= $ 1' 所有不是index.php的都会重定向到index.php,传递指定为get参数'url'的URL。 – 2010-05-27 18:49:54

+0

第一个解决方案(在ServerFault上)无法正常工作:$ 1无法处理“?”符号。这意味着如果我的.htaccess是 RedirectMatch永久^ /(?<!index \ .php)(。*)http://example.com/index.php?url=$1 ,我会要求www.mysite.com /http://www.test.com/?par=1 - 它削减“?par = 1”,结果将是http://www.test.com/ – 2010-05-27 18:53:46

0

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

RewriteRule ^http:/ index.php [L] 

然后请求的URI路径加上查询(所以部分从第三/到第一#或URI的结尾)可在$_SERVER['REQUEST_URI']

+0

无论如何,我得到403(访问禁止)错误,这是因为URL中冒号(:)。我尝试127.0.0.1/http://www.test.com – 2010-05-27 19:03:51

+0

@Vitaly:服务器的错误和访问日志说什么? – Gumbo 2010-05-27 19:10:58

+0

error_log says“[Thu May 27 22:01:08 2010] [error] [client :: 1](20024)给定路径格式错误或包含无效字符:无法映射GET/http:// hjh HTTP/1.1到文件“ access_log says”127.0.0.1 - - [27/May/2010:21:03:17 +0300]“GET/http:// hjh HTTP/1.1”403 1175“ - ”“Mozilla/5.0 U; Windows NT 6.1; en-US)AppleWebKit/533.4(KHTML,如Gecko)Chrome/5.0.375.55 Safari/533.4“ – 2010-05-27 19:18:29

3

问题:

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

如果您同时使用mod_rewrite,它将被跳过。

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

解决方案:

在写这个答案这个错误仍然存​​在的时候并没有绝对的解决方案,有一个小窍门:

您可以将网址变更的东西像这样: http://www.mysite.com/url/http://www.test.com

在这个例子中

http://www.mysite.com/是你脚本路径/url/http://www.test.com是你的请求URI。如果有前结肠:)一斜杠/

的问题将不复存在。

相关问题