2013-05-16 119 views
0

我有一種情況,我們重新設計了網站並將其移至新域。舊網站有幾個我們需要重定向到新域的客戶子域,但是我們將明確指定的文件夾。請注意,新域名實際上是舊域名的子域名,因此如果有的話,不知道這是多麼複雜的事情。將oldsite.com重定向到new.oldsite.com,並將sub.oldsite.com重定向到new.oldsite.com/sub/

例如,oldsite.com目前所有請求重定向到new.oldsite.com以下的規則:

RewriteCond %{HTTP_HOST} !^\.oldsite\.com 
RewriteRule ^(.*)$ http://new.oldsite.com/$1 [R=302,L] 

我也想了一些特定子域重定向到的new.oldtsite.com文件夾,像subdomain.oldsite.comnew.oldsite.com/subdomain/。還有這種可能性,即舊的子域名和新的目錄將有不同的名稱(subdomain.oldsite.comnew.oldsite.com/subdomain-name/: - 。/

我試圖重複此規則的子域夾重定向,但只是劫持所有重定向。

我會給你一個虛擬擊掌,如果你能發現我的修正。

回答

1

讓你的規則,從具體到一般。mod_rewrite的啓用,並通過httpd.conf的.htaccess,然後把這個代碼在你.htaccessDOCUMENT_ROOT下目錄:

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

RewriteCond %{HTTP_HOST} ^subdomain\.oldsite\.com$ [NC] 
RewriteRule ^(.*)$ http://new.oldsite.com/subdomain-name/$1 [R=302,L] 

RewriteCond %{HTTP_HOST} ^oldsite\.com$ [NC] 
RewriteRule ^(.*)$ http://new.oldsite.com/$1 [R=302,L] 

編輯:重定向到any.oldsite.com/foonew.oldsite.com/any/foo

RewriteCond %{HTTP_HOST} ^([^.]+)\.oldsite\.com$ [NC] 
RewriteRule ^(.*)$ http://new.oldsite.com/%1/$1 [R=302,L] 

一旦你驗證它是否工作正常,更換R=302R=301。避免在測試mod_rewrite規則時使用R=301(永久重定向)。

+0

太棒了! o/\ o @anubhava,這對於重定向這些子域名非常有用,現在有辦法爲其他子域名添加一條全新的鏈接,並將它們重定向到'new.oldsite.com'? – ToddSmithSalter

+0

不客氣。是的,也可以做,讓我編輯我的答案。 – anubhava