0

我正在尝试将网站更改为多语言,所以我有这样的 URL:

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]

但我还需要主页 url 作为www.company.com/en(指向index.php?lang=en),这不适用于此规则。

最好的解决方案是

RewriteRule    ^(.*)/(.*)$    ?lang=$1&what=$2    [NC,L]

但它会转换所有 url,比如href='css.css'引用类型,所以它会弄乱整个页面。

那么我应该如何将第一个 GET 变量限制为两个字符?或定义的语言之一?

4

1 回答 1

1

尝试:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z]{2})(?:/(.*)|)$ /?lang=$1&what=$2 [L]

第一个分组 ,([a-z]{2})捕获 2 个字母的语言。第二个可选分组捕获“什么”。如果那里什么都没有,那么“什么”将是空白的。

于 2013-07-25T02:50:31.277 回答