我确信在网络上有类似主题的其他主题,但我无法在我自己的网站上运行。
问题是我有一个多语言网站,通过URL控制所选语言。现在网址是:
www.website.com/en/order
或其他任何英语或
www.website.com/da/order
丹麦语。这一切都运行得很好但是我希望能够只使用默认语言的普通URL,例如www.website.com/order
,然后它只选择默认语言(我在我的PHP代码中定义)
使用.htaccess有没有简单的方法呢?现在我的.htaccess代码如下:
RewriteRule ^(.*)\/(.*)$ index.php?lang=$1&page=$2 [nc]
我也尝试过两条规则:
RewriteRule ^(.*)\/(.*)$ index.php?lang=$1&page=$2 [nc]
RewriteRule ^(.*)$ index.php?page=$1 [nc]
但没有任何作用..
答案 0 :(得分:2)
这个应该捕获所有不以2个字母的语言代码开头的URL,并简单地将所有那些重写为index.php
RewriteCond %{REQUEST_URI} !^/[a-z]{2}/ [NC]
RewriteRule ^(.*)$ index.php?page=$1 [QSA,L]
# match those that DO have a language code
RewriteRule ^([a-z]{2})/(.*)$ index.php?lang=$1&page=$2 [QSA,L,NC]
当然,您要确保您没有任何也是双字母组合的网页网址...
如果您只支持一小组语言(例如“da”,“en”,“de”),则可以通过使用此语言使其更加强大
RewriteCond %{REQUEST_URI} !^/(da|en|de)/ [NC]
顺便说一句,你总是要记得使用QSA-flag将任何现有的GET参数附加到重写的URL。
答案 1 :(得分:0)
您可以尝试使用RewriteCond。对于(未经测试且可能是错误的)示例,使用英语作为默认值:
RewriteCond %{REQUEST_URI} ^\/..\/ [NC]
RewriteRule ^\/(..)\/(.*) index.php?lang=$1&page=$2 [NC]
RewriteCond %{REQUEST_URI} ^\/.* [NC]
RewriteRule ^\/(.*) index.php?lang=en&page=$1 [NC]