2013-07-25 73 views
0

我试图改变一个网站,以多国语言,所以我的URL是这样的:的.htaccess冲突的重写规则

www.company.com/en/about 
www.company.com/fr/about 

应该指向的index.php LANG = EN &什么=约?

所以我定义了以下重写规则(工作)

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] 

,但将所有的URL,像href='css.css'样的参考,所以它搅乱了整个页面。

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

回答

1

尝试:

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

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

+0

谢谢!它有效,但我必须将'/?lang ..'改为'?lang ..' – jeff