我正在尝试将网站更改为多语言,因此我的网址是这样的:
www.company.com/en/about
www.company.com/fr/about
应该指向index.php?lang = en& what = about
所以我定义了以下重写规则(有效)
RewriteRule ^en/(.*)$ ?lang=en&what=$1 [NC,L]
RewriteRule ^fr/(.*)$ ?lang=fr&what=$2 [NC,L]
但我还需要首页网址为www.company.com/en
(指向index.php?lang=en
)
这对于这条规则不起作用。
最好的解决方案就是
RewriteRule ^(.*)/(.*)$ ?lang=$1&what=$2 [NC,L]
但它会转换所有网址,例如href='css.css'
类型的引用,因此会混淆整个页面。
那么我应该如何将第一个GET变量限制为两个字符?或其中一种定义的语言?
答案 0 :(得分:1)
尝试:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z]{2})(?:/(.*)|)$ /?lang=$1&what=$2 [L]
第一个分组([a-z]{2})
捕获2个字母的语言。第二个可选分组捕获“什么”。如果那里什么也没有,那么“什么”将是空白的。