2011-03-02 147 views
1

一直在這個問題上停留了很久,並且嘗試了大量修復程序,但是卻無法讓我的頭部繞過它!從.htaccess中的URL中刪除http(mod_rewrite)

我運行一個網站,根據URL生成網頁內容。例如:

http://www.mysite.com/http://www.supercheese.com 

將產生的內容從mysite.com混搭和supercheese.com

我使用此(在mysite.com)的htaccess的是:

<ifModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteCond %{ENV:REDIRECT_STATUS} 200 
    RewriteRule .* - [L] 
    RewriteRule assets/.* - [L] 
    RewriteRule ^(.*)$ test.php?url=$1 [NC,L] 

</ifModule> 

所以基本上第二個URL是通過一個PHP字符串傳遞的。

我的問題是,我需要刪除HTTP:從地址//使用的.htaccess

E.G.如果有人類型:

http://www.mysite.com/http://www.supercheese.com 

我需要它變成:

http://www.mysite.com/www.supercheese.com 

許多在此先感謝您抽出寶貴看看這個。你們好棒。

回答

2

您可以簡單地用一個RedirectMatch

http://httpd.apache.org/docs/2.0/mod/mod_alias.html#redirectmatch

與嘗試:

RedirectMatch ^/https?://(.*)$ http://www.mysite.com/$1 

編輯:你有重寫規則之前把這個

編輯:之前HTTP

添加 /

編輯:大衛是對的,看看他的答案,並改變你寫這些網址的方式

+0

嗨,謝謝你。試過把它放在最後,但沒有運氣:( – DrShamoon 2011-03-02 14:04:41

+0

不客氣,點擊接受:) – soju 2011-03-02 14:07:07

+0

你必須把這個RedirectMatch之前重寫規則 – soju 2011-03-02 14:08:32

1

它看起來像我的url方案本質上是有問題的。

在url中使用未編碼的冒號: - 除了在http之後指定訪問協議 - 似乎使服務器認爲它正在進行http://username:[email protected]/的驗證。

我知道它並不直接回答這個問題,解決辦法是改變url-scheme。 ;-(

+2

我記得有重寫包含路徑中的方案的URL的問題,我想「:」應該被URL編碼爲% 3a – Capsule 2011-03-02 14:42:10

+2

+1,'/'也應該被編碼'://'=>'%3A%2F%2F' – soju 2011-03-02 20:27:13

+0

@Capsule,@soju:確實,結果是包含了http://網址將成爲問題剝去一切。 – 2011-03-03 03:33:39