我需要一些帮助,为网站编写2个正确的mod_rewrite规则。
基本上我有以下结构:
http://www.website.com/subsite/lang
(例如www.website.com/corporate/en)后跟其他网址段。一切正常。
但我需要做的是:
访问www.website.com时强制重定向到http://www.website.com/default/
,省略(如果)第一段(子站点)。这可以是硬编码的值。
使用.htaccess检测broswer $ lang,如果未在网址中指定语言,则重定向到http://www.website.com/subsite/$lang
。
使用.htaccess执行这两个规则的正确方法是什么?
答案 0 :(得分:0)
1很简单:
RewriteEngine On
RewriteRule ^$ /default/ [L,R=301]
但是2要求解析接受语言标题,这不像正则表达式那样简单并且替换。
答案 1 :(得分:0)
启用mod_rewrite
和.htaccess
至httpd.conf
,然后将此代码放入DOCUMENT_ROOT/.htaccess
文件中:
RewriteEngine On
# if 1st segment is not there send to /default
RewriteCond %{REQUEST_URI} !^/(default|corporate)/ [NC]
RewriteRule ^ /default/ [L,R=301]
# if language was not specified in the URL then send to /corporate/$lang
RewriteCond %{REQUEST_URI} !^/(?:default|corporate/[a-z]{2}) [NC]
RewriteCond %{HTTP:Accept-Language} ^([a-z]{2}) [NC]
RewriteRule ^ /corporate/%1 [L,R=301]