我有一个基于php的网站,我正在使用控制当前网页语言的lang
网址变量。但它看起来像这样:
http://www.example.com/page?lang=en # Yes, I am using .htaccess to remove the php extension from php pages.
所以我想用.htaccess重写它:
http://www.example.com/en/page # Doesn't this look way better?
请记住,我不是也不想依赖Accept-Language
,我想让用户自由更改语言,即使他们的PC是英文的,他们可能是其中一个的本地人我的网站有语言......
我尝试了以下方法:
RewriteCond %{HTTP:Accept-Language} ^en [NC]
RewriteRule ^$ http://www.example.com/en/ [L,R=301]
RewriteCond %{HTTP:Accept-Language} ^ru [NC]
RewriteRule ^$ http://www.example.com/ru/ [L,R=301]
RewriteCond %{HTTP:Accept-Language} ^de [NC]
RewriteRule ^$ http://www.example.com/de/ [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(en|ru|de)/?$ index.php?lang=$1 [QSA,NC,L]
但这显然取决于浏览器作为Header
发送的内容,因此它不可行。如果我尝试更改为不在Accept-Language
范围内的语言,它也会破坏我的网站 - 我的是英语,所以如果我尝试访问该网站的Deutsch版本,我会得到这个:
http://www.example.com/en/?lang=de
这当然不是我想要的。
修改
实际上,这就是我发现的:
RewriteEngine On
RewriteRule ^([^/]*)/$ /?lang=$1 [L]
我必须为我的所有页面执行此操作...问题在于,如果我尝试执行以下操作:
http://www.example.com/?lang=bg
它会保持这样,不会重定向所以我不得不更改我的所有链接 - .-有关如何重定向的任何想法?我已经有了虚拟网址。
答案 0 :(得分:0)
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^([^/]*)/$ /?lang=$1 [L]
试试这个