2013-01-08 74 views
1

我有一箇舊網站不再使用,需要將流量重定向到其他地方。我遇到的一個問題是,該網站的某個特定區域需要保持可用,以支持從該網站購買物品的以前的客戶。重定向與特定路徑不匹配的流量

我想用.htaccess做到這一點,但我的正則表達式知識是相當有限的。

基本上我想重定向不具備支持路徑(這會對後面的附加段)的所有站點的請求:

http://www.example.com/support 
http://www.example.com/support/contact 
http://www.example.com/support/ticket 

但是下面的例子(二許多)應該被重定向新網站:

http://www.example.com 
http://www.example.com/projects 

到目前爲止,我只有弄清楚如何使用重定向,沒有額外的參數要求:

RewriteRule ^$ http://www.newsite.com/ [L,R=301] 

我知道我需要什麼,基本上是這樣的:

IF url does not contain www.example.com/support 
THEN redirect 

我只是不知道如何將其與正則表達式寫/的.htaccess

任何幫助,將不勝感激。

+0

要將所有網址重定向沒有'路徑support'。是對的嗎? –

+0

這是正確的。 – diggersworld

回答

1

更容易與mod_rewrite的指令,例如:

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ 
RewriteCond %{REQUEST_URI} !/support/? [NC] 
RewriteRule ^(.*)$ http://www.newsite.com/$1 [L,R=301,QSA] 
+0

這對我有用,謝謝。 – diggersworld

+0

不客氣。 –

0

試試這個:

RewriteRule ^(support/?.*)$ $1 [L] 
RewriteRule ^(.*)$ http://www.newsite.com/$1 [L,R=301] 

第一個 「轉發」 你support/要求support/...並完成的RewriteRules的處理。第二個應該將所有其他查詢轉發到新網站。

+0

當第一個條件匹配時,我似乎正在得到一個'Internal Server Error'。 – diggersworld

+0

我想我錯過了一些'$'標誌。我已將它添加到我的答案中。 – Itchy

1

Apache在great documentationmod_rewrite。這真的值得一讀。

在你的特殊情況,以避免開始support所有路徑重定向,您可以使用RewriteCond指令,即:

RewriteCond %{REQUEST_URI} !^/support 
RewriteRule ^(.*) http://www.newsite.com/$1 [L,R=301] 
+0

嗯......重定向的作品,但它似乎仍然重定向我,當我點擊/支持的URL。 – diggersworld

+0

感謝您的鏈接,這似乎很有用。 – diggersworld