2012-02-25 125 views
0

我希望寫在.htaccess規則重定向子域名重定向

http://www.dir.domain.com 
http://dir.domain.com 
http://www.domain.com/dir 

這些應該重定向到提前

http://domain.com/dir 

謝謝...

+0

你現在有一個'* .domain.com'的catchall重定向到你的DOCROOT的'domain.com'嗎?你有什麼類型的服務? VPS或共享服務,如果後者是cPanel或webadmin啓用。你所問的是可行的,但答案因你告訴我們的情況而異。 – TerryE 2012-02-25 17:37:31

+0

我在共享服務中有一個域和一個子域。這裏即時談論我的子域。 – HDTV 2012-02-25 18:13:54

回答

0

這裏的技巧是使用.htaccess file DOCROOT

RewriteEngine on 
RewriteBase /

RewriteCond %{HTTP_HOST} ^(www\.)?dir\.domain\.com$ 
RewriteRule ^.*    http://domain.com/dir/$0  [R=301,L] 

RewriteCond %{HTTP_HOST} ^www\.domain\.com$ 
RewriteRule ^dir/.*   http://domain.com/$0   [R=301,L] 

請注意,這是301重定向 - 即服務器告訴瀏覽器,這是一個永久重定向,瀏覽器會緩存此重定向。

您也可以通過調整標誌在內部重定向,在服務器端以靜默方式完成此映射。

這是假設您的共享服務使用Apache,如果使用的是IIS的,那麼你需要做的web.config中類似

+0

它不重定向... – HDTV 2012-02-25 18:42:02

+0

> RewriteCond%{HTTP_HOST}^www.dir.domain.com [NC] > RewriteRule ^(。*)$ http://domain.com/dir/$1 [L,R = 301] > RewriteCond%{HTTP_HOST}^dir.domain.com [NC] > RewriteRule ^(。*)$ http://domain.com/dir/$1 [L,R = 301]> RewriteCond%{ HTTP_HOST}^dir.domain.com [NC] > RewriteRule ^(。*)$ http://domain.com/dir/$1 [L,R = 301]>如果我將此代碼添加到/dir/.htaccess那麼它會將[http://dir.domain.com] > [http://www.domain.com/dir]重定向到[http://domain.com/dir]>,但它不會重定向[ http://www.dir.domain.com] @TerryE – HDTV 2012-02-25 19:04:54

+0

@HDTV,注意Cond1的調整 - 也編輯你的Q來添加這樣的信息。 – TerryE 2012-02-25 19:14:54

0

你可以試試:

RewriteCond %{HTTP_HOST} ^((?!www).+)\.domain\.com$ 
RewriteRule^http://domain.com/%1 [L,NE] 

請在您的域中更改域,當您輸入sub1.domain.com時,它將重定向到domain.com/sub1,當您輸入sub2.domain.com時,它將重定向到domain.com/sub2 ....

+0

請給出詳細的答案 – 2016-05-07 13:14:48