语言重写.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]
唉…… 我尝试根据以下 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]