语言浏览器检测和动作重写
Language browser detection and action rewrite
直到现在我一直在使用 htaccess
重写 ?action
只用这个代码:
RewriteCond %{QUERY_STRING} ^action=([^&\s]+)$
RewriteRule ^(?:index\.php|)$ /%1? [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\s\/]+)/?$ index.php?action=&r [L,QSA]
现在我进入了一个多语言网站,我想检测用户的浏览器语言并根据此信息将他重定向到他的语言版本
并重写:
index.php?lang=en&action=subpage
进入
en/subpage
您可以在站点根目录 .htaccess 中使用这样的规则:
RewriteEngine On
# external redirect from actual URL to pretty one
RewriteCond %{THE_REQUEST} /(?:index\.php)?\?lang=([^\s&]+)&action=([^\s&]+)\s [NC]
RewriteRule ^ /%1/%2? [R=301,L,NE]
# add default language prefix
RewriteCond %{HTTP:Accept-Language} ^([a-z]{2})- [NC]
RewriteRule ^(?![a-z]{2}/)[^/]*/?$ /%1%{REQUEST_URI} [L,R=301,NE]
# internal forward from pretty URL to actual one
RewriteRule ^([a-z]+)/([\w-]+)/?$ index.php?lang=&action= [L,QSA,NC]
直到现在我一直在使用 htaccess
重写 ?action
只用这个代码:
RewriteCond %{QUERY_STRING} ^action=([^&\s]+)$
RewriteRule ^(?:index\.php|)$ /%1? [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\s\/]+)/?$ index.php?action=&r [L,QSA]
现在我进入了一个多语言网站,我想检测用户的浏览器语言并根据此信息将他重定向到他的语言版本
并重写:
index.php?lang=en&action=subpage
进入
en/subpage
您可以在站点根目录 .htaccess 中使用这样的规则:
RewriteEngine On
# external redirect from actual URL to pretty one
RewriteCond %{THE_REQUEST} /(?:index\.php)?\?lang=([^\s&]+)&action=([^\s&]+)\s [NC]
RewriteRule ^ /%1/%2? [R=301,L,NE]
# add default language prefix
RewriteCond %{HTTP:Accept-Language} ^([a-z]{2})- [NC]
RewriteRule ^(?![a-z]{2}/)[^/]*/?$ /%1%{REQUEST_URI} [L,R=301,NE]
# internal forward from pretty URL to actual one
RewriteRule ^([a-z]+)/([\w-]+)/?$ index.php?lang=&action= [L,QSA,NC]