htaccess基于主机名或域名重写

tob*_*lla 17 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]
Run Code Online (Sandbox Code Playgroud)

我不能让这个工作,使用不同的域:

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]
Run Code Online (Sandbox Code Playgroud)

tob*_*lla 29

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

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] 
Run Code Online (Sandbox Code Playgroud)

当然,我在此规则之前检查www重定向.

谢谢!!