mod_rewrite默认重定向到缺失的段

时间:2013-10-03 07:37:50

标签: apache .htaccess mod-rewrite redirect

我需要一些帮助,为网站编写2个正确的mod_rewrite规则。

基本上我有以下结构:

http://www.website.com/subsite/lang(例如www.website.com/corporate/en)后跟其他网址段。一切正常。

但我需要做的是:

  1. 访问www.website.com时强制重定向到http://www.website.com/default/,省略(如果)第一段(子站点)。这可以是硬编码的值。

  2. 使用.htaccess检测broswer $ lang,如果未在网址中指定语言,则重定向到http://www.website.com/subsite/$lang

  3. 使用.htaccess执行这两个规则的正确方法是什么?

2 个答案:

答案 0 :(得分:0)

1很简单:

RewriteEngine On
RewriteRule ^$ /default/ [L,R=301]

但是2要求解析接受语言标题,这不像正则表达式那样简单并且替换。

答案 1 :(得分:0)

启用mod_rewrite.htaccesshttpd.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]