htaccess基于主机名或域名重写

时间:2012-04-19 16:39:32

标签: apache .htaccess mod-rewrite

我有两个不同的域名(比如www.site1.com和www.site2.com)指向同一个托管服务器。

我需要两个不同的域名,因为我想使用第一个用于意大利语内容,第二个用于英语内容。内容是相同的,除非语言,但域 不同。

所以,我想编写一条允许我翻译的规则:

  • 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]

1 个答案:

答案 0 :(得分:27)

劳伦斯·切罗纳 - 谢谢你,一个像魅力一样的作品!现在它起作用了:

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重定向。

谢谢!