2012-04-19 24 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重定向。

谢谢!