2012-04-19 59 views
12

我有兩個不同的域(比如www.site1.com和www.site2.com)指向同一個託管服務器。根據主機名或域名重寫htaccess

我需要兩個不同的域名,因爲我想用第一個意大利語內容和第二個英文內容。內容是相同的,除非語言,但域是不同的。

所以,我想寫一個規則,讓我翻譯的:

  • www.site1.com/?lang=it

  • www.site2.com/?lang=en

我通常使用相同用於許多不同語言的域名,從www.site.com/it//?lang=it(當然,透明重寫 - 用戶沒有看到任何不同的URL)。

我想使用不同的域名來實現同樣的功能,但我無法弄清楚......我一直在努力工作數小時,並且無法達到我想要的效果!

通常我用這個:

RewriteCond %{REQUEST_URI} /([a-z]{2}) 
RewriteRule ^([a-z]{2})[/]*$ /index.php?lang=$1 [NC,QSA] 

我不能得到這個一兩件事,用不同的領域:

RewriteCond %{HTTP_HOST} ^www.site1\.com [NC] 
RewriteCond %{REQUEST_URI} !^/index.php?lang=it 
RewriteRule ^(.*)$ /index.php?lang=it [NC,QSA] 

RewriteCond %{HTTP_HOST} ^www.site2\.com [NC] 
RewriteCond %{REQUEST_URI} !^/index.php?lang=en 
RewriteRule ^(.*)$ /index.php?lang=en [NC,QSA] 
+2

[.htaccess RewriteRule:兩個域使用相同的服務器和目錄]的可能重複(http://stackoverflow.com/questions/6972413/htaccess-rewriterule-two-domains-using-same-server-and-directory) – 2012-04-19 16:48:30

+0

這個設置會發生什麼?如果你刪除第二個RewriteCond('^/index.php?lang =它永遠不會匹配,REQUEST_URI不會公開查詢參數,請改爲檢查%{QUERY_STRING})? – nikoshr 2012-04-19 17:58:12

+0

我已經嘗試了許多不同的「版本」的規則在後面的灰色塊...我總是得到一個HTTP 500錯誤或只是一個空的$ _GET。我的意思是,在其他試驗中,有或沒有第二個條件「RewriteCond%{REQUEST_URI}!^/index.php?lang = it」。 – 2012-04-20 06:57:37

回答

21

勞倫斯Cherone - 謝謝你,一個工程就像一個魅力!現在它的工作原理:

RewriteCond %{HTTP_HOST} ^www\.site1\.com [NC] 
RewriteRule ^(.*)$ index.php?lang=it [NC,QSA] 
RewriteCond %{HTTP_HOST} ^www\.site2\.com [NC] 
RewriteRule ^(.*)$ index.php?lang=en [NC,QSA] 

當然,我在這個規則之前檢查www重定向。

謝謝!