Php 使用htaccess直观地更改URL

Php 使用htaccess直观地更改URL,php,.htaccess,web,Php,.htaccess,Web,我试图在视觉上改变 www.example.com/?lang=en 到 www.example.com/en 但它不起作用 这是我的密码: RewriteCond %{QUERY_STRING} ^lang=(\w+)$ RewriteRule ^(.*)\?lang=(\w+)$ /$1 [L] 我不想要任何重定向,我只想在URL上看到结果 有人能帮我吗 谢谢。试试这样: RewriteEngine On RewriteCond %{HTTP:Accept-Language} ^en [

我试图在视觉上改变

www.example.com/?lang=en

www.example.com/en

但它不起作用

这是我的密码:

RewriteCond %{QUERY_STRING} ^lang=(\w+)$
RewriteRule ^(.*)\?lang=(\w+)$ /$1 [L]
我不想要任何重定向,我只想在URL上看到结果

有人能帮我吗


谢谢。

试试这样:

RewriteEngine On

RewriteCond %{HTTP:Accept-Language} ^en [NC]
RewriteRule ^$ http://yoursite.com/en/ [L,R=301]

RewriteCond %{HTTP:Accept-Language} ^de [NC]
RewriteRule ^$ http://yoursite.com/de/ [L,R=301]

RewriteCond %{HTTP:Accept-Language} ^nl [NC]
RewriteRule ^$ http://yoursite.com/nl/ [L,R=301]

RewriteCond %{HTTP:Accept-Language} ^fr [NC]
RewriteRule ^$ http://yoursite.com/fr/ [L,R=301]

RewriteCond %{HTTP:Accept-Language} ^es [NC]
RewriteRule ^$ http://yoursite.com/es/ [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^(en|de|nl|fr|es)/?$ index.php?lang=$1 [QSA,NC,L]

^(.*)lang=(\w+)$
永远不会匹配-RewriteRule只会根据模式检查URL的路径组成部分。我不能100%确定我是否同意使用
HTTP:Accept Language
,但这会起作用-如果您能为OP和任何未来的访问者添加一个简短的解释,说明这是如何工作的,那就太好了;)