重写 htaccess 中的语言前缀



我有一个多种语言的多域网站。对于我在那里创建的每个域,特定的语言。

例如:
比利时www.mysite.be/be_fr
法国www.mysite.be/fr_fr

它们都是法语,但我拆分了语言,以便可以显示其他内容/翻译。

我想在不更改语言代码的情况下将 URL 重写为www.mysite.be/frwww.mysite.fr/fr

我想在 .htaccess 中很容易,但我在正则表达式等方面不太好。

我希望有人能帮助我朝着正确的方向前进。

我假设mysite.bemysite.fr都指向同一台服务器,并使用相同的http根。我还假设您已经启用了mod_rewrite并授予它更改主配置文件(httpd.conf 或类似内容)中的 url 的权限。

在 http 根目录中,使用以下规则:

RewriteEngine on
#Redirect to the correct place on an external request
RewriteCond %{THE_REQUEST} /be_fr
RewriteRule ^be_fr(.*)$ http://www.mysite.be$1 [R,L]
RewriteCond %{THE_REQUEST} /fr_fr
RewriteRule ^fr_fr(.*)$ http://www.mysite.fr$1 [R,L]
#Internally rewrite requests to the correct place
RewriteCond %{HTTP_HOST} .be$
RewriteRule ^(?!be_fr) /be_fr%{REQUEST_URI} [L]
RewriteCond %{HTTP_HOST} .fr$
RewriteRule ^(?!fr_fr) /fr_fr%{REQUEST_URI} [L]

前两条规则确保我们使用正确的 URL。它们仅在外部请求上匹配。请确保在测试一切按预期工作后将 [R] 标志更改为 [R=301]。最后两个规则首先测试url是否以be_frfr_fr开头,然后测试域是否以.be.fr结尾,最后重写url。

最新更新