您好,我有一个网站,应该以多种语言提供。我用wordpress制作的。我试图实现的是,每种语言都有其自己的(虚拟)子域。因此,例如fr.foo.eu和nl.foo.eu。

目前,我的网址格式如下:
foo.eu/?lang=nl
foo.eu/?lang=fr

网址中可能包含更多内容,例如:
http://hypnose.eu/hallo-wereld/?lang=nl

我想使用htaccess通过以下方式获取我的网址:

 http://nl.hypnose.eu/hallo-wereld/


你们能帮助我实现这一目标吗?

这是我到目前为止在.htaccess中拥有的内容:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} !^([a-z]{2}\.hypnose\.eu$ [NC]
RewriteCond %{THE_REQUEST} \ /+([^\?]*)\?lang=([a-z]{2})&?([^\ ]*)
RewriteRule ^ http://%2.hypnose.eu/%1?%3 [L,R]

RewriteCond %{QUERY_STRING} !(^|&)lang=
RewriteCond %{HTTP_HOST} ^([a-z]{2})\.hypnose\.eu$ [NC]
RewriteRule ^(.*)$ /$1?lang=%2 [L,QSA]

RewriteRule ^index\.php$ - [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . /index.php [L]
</IfModule>

最佳答案

尝试在您的wordpress规则之上添加:

RewriteCond %{HTTP_HOST} !^([a-z]{2})\.foo\.eu$ [NC]
RewriteCond %{THE_REQUEST} \ /+([^\?]*)\?lang=([a-z]{2})&?([^\ ]*)
RewriteRule ^ http://%2.foo.eu/%1?%3 [L,R]

RewriteCond %{QUERY_STRING} !(^|&)lang=
RewriteCond %{HTTP_HOST} ^([a-z]{2})\.foo\.eu$ [NC]
RewriteRule ^(.*)$ /$1?lang=%1 [L,QSA]

10-08 06:56