语言重写.htaccess

Language Rewrite .htaccess

唉…… 我尝试根据以下 Stack Overflow 问题构建一些重写规则: Question 1 Question 2

我的 .htaccess 目前看起来像这样:

RewriteEngine On 
RewriteBase /

RewriteCond %{REQUEST_URI} !^/(en|fr|es|de)/
RewriteRule ^(.*)$ /en/ [R,L]

RewriteRule ^(en|fr|es|de)/(.*)$  ?locale= [L]

并且我尝试了各种变体(包括问题中给出的确切答案)。

目前我的 URL 正在重定向到:

/en/?locale=en

当我在 Firefox 中查看带有无限重定向循环的根目录时(“页面未正确重定向”)。

正如您可能已经猜到的那样,我希望它在根目录上重写为 /en/ 并使其在浏览器中看起来像那样。但我希望真正的 url 是 /?locale=en。根上有一个 index.php 。也许我需要另一条规则来考虑这一点?

我不知道,我真的很累很生气,.htaccess 一直是我的败笔。任何见解表示赞赏。

您需要确保第一条规则中没有区域设置查询字符串:

RewriteCond %{QUERY_STRING} !locale=
RewriteCond %{REQUEST_URI} !^/(en|fr|es|de)/
RewriteRule ^(.*)$ /en/ [R,L]

或者你可以试试:

RewriteCond %{THE_REQUEST} \ /+(?!(en|fr|es|de)/).*
RewriteRule ^(.*)$ /en/ [R,L]