多域扩展,一个服务器,一个代码,一个htaccess

时间:2014-05-11 06:32:43

标签: php apache .htaccess mod-rewrite redirect

我有多个域名(FR,BE,NL,ES,...),它们都被重定向到主网络服务器。 php代码是共享的,并且对于所有域名都是相同的。语言,我只是用参数“lang =”来识别活动语言。 我想确定使用哪种语言通过.htaccess文件传递一个lang param,因为该param是语言环境,我也可以识别域名。

实施例

if mydomain.nl & page is /contact    -> /code/contact.php?lang=nl_NL
if mydomain.fr & page is /contact    -> /code/contact.php?lang=fr_FR
if mydomain.es & page is /contact    -> /code/contact.php?lang=es_ES
if mydomain.be & page is /fr/contact -> /code/contact.php?lang=fr_BE
if mydomain.be & page is /nl/contact -> /code/contact.php?lang=nl_BE 
if mydomain.be & page is /en/contact -> /code/contact.php?lang=en_BE 

此外,我想摆脱“www。”。

谢谢你的帮助, 氢氧化锂。

编辑: 好的我还有问题。我有这个:

RewriteCond %{HTTP_HOST} \.be$ [NC]
RewriteRule  ^fr/a-propos$  /code/internal.php?lang=fr_BE&id=7 [QSA,L]
RewriteRule  ^fr/pourquoi$ /code/internal.php?lang=fr_BE&id=11 [QSA,L]
RewriteRule  ^fr/logout$ /scripts/logout.php?lang=fr_BE [QSA,L]
RewriteCond %{HTTP_HOST} \.fr$ [NC] 
RewriteRule  ^a-propos$ /code/internal.php?lang=fr_FR&id=7  [QSA,L]
RewriteRule  ^pourquoi$ /code/internal.php?lang=fr_FR&id=11 [QSA,L]
RewriteRule  ^logout$ /scripts/logout.php?lang=fr_FR [QSA,L]

当我尝试:

Mydomain.be/fr/logout -> It works 
Mydomain.fr/logout -> It works 
Mydomain.fr/fr/logout -> It works also but it shouldn't and will be ugly for duplicate content.

我读过RewriteCond仅适用于下一条规则,我是否需要在每条规则之前加入RewriteCond?

1 个答案:

答案 0 :(得分:2)

将此代码放在DOCUMENT_ROOT/.htaccess文件中:

RewriteEngine On

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

RewriteCond %{HTTP_HOST} \.nl$ [NC]
RewriteRule ^([^/.]+)/?$ /code/$1.php?lang=nl_NL [L,QSA]

RewriteCond %{HTTP_HOST} \.fr$ [NC]
RewriteRule ^([^/.]+)/?$ /code/$1.php?lang=fr_FR [L,QSA]

RewriteCond %{HTTP_HOST} \.es$ [NC]
RewriteRule ^([^/.]+)/?$ /code/$1.php?lang=es_ES [L,QSA]

RewriteCond %{HTTP_HOST} \.be$ [NC]
RewriteRule ^([a-z]{2})/([^/.]+)/?$ /code/$2.php?lang=$1_BE [L,QSA]