2012-10-02 54 views
0

在我正在工作的應用程序中,我需要動態創建子域。如果我知道什麼是我需要重定向到的域,那將是非常微不足道的。 關鍵是我可以有很多域指向同一臺服務器,每個可能有許多子域,我想要一個可以處理它的htaccess。如何爲動態域創建動態子域

例如:domain1.com,domain1.com.br,domain2.com,domain2.co.uk都可以指向我的服務器。當用戶試圖訪問sub.domain1.com時,我希望它被透明地重定向到(無301重定向)到domain1.com。如果他試圖訪問sub.domain1.com.br,我希望它被透明地重定向到domain1.com.br等等(請注意,這兩個重定向都指向完全相同的點,唯一的區別是地址酒吧)。

現在,我試圖對從www重定向的行進行更改失敗。到非www域,但沒有按預期工作:

//This works 
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] 
RewriteRule ^(.*)$ http://%1/$1 [R=301,L] 

    //This ends with a "too many redirections" error 
#RewriteCond %{HTTP_HOST} ^(.*)$ [NC] 
#RewriteRule ^(.*)$ http://%1/$1 [L,QSA] 

有人可以幫忙嗎?

回答

0

試試這個:

RewriteCond %{HTTP_HOST} ^(.+)\.([^.]{4,})\.([a-z]{3,4}|[a-z]{2,3}\.[a-z]{2}|[a-z]{2})$ [NC] 
RewriteRule ^(.*)$ http://%2.%3/$1 [L,R=301] 

這應該涵蓋所有的這些:

  • domain1.com
  • domain1.com.br
  • domain2.co.uk
  • DOMAIN3 .es
  • domain4.info
+0

感謝您的幫助!不幸的是,它不能解決問題,因爲它做301重定向,我需要重定向(甚至不知道重定向是否是它的正確名稱)透明地發生(無需更改地址欄中的網址)。 – Robyflc

+0

@Robyflc然後將'R = 301'改爲'P'。這意味着您沒有重定向(意味着*更改瀏覽器地址欄中的網址*),而是在服務器上進行內部代理,例如,一個**反向代理**)。 –

+0

我不知道P標誌......非常有趣...無論如何,我也沒有工作。 htaccess現在在meusite0800.com.br上。如果我嘗試訪問template.meusite0800.com.br(之前使用cPanel設置並且我希望避免),它仍然會重定向到主域(即使使用P標誌)。如果我嘗試一個以前沒有設置的隨機子域,它只是給我一個頁面未找到錯誤。 – Robyflc