2010-05-27 71 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。如果有前結腸:)一斜槓/

的問題將不復存在。

相關問題