1

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

基本上我有以下结构:

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

然而,我需要做的是:

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

  2. 使用 .htaccess 检测浏览器 $lang 并重定向到http://www.website.com/subsite/$lang如果 URL 中未指定语言。

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

4

2 回答 2

0

1很简单:

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

但是 2 需要解析接受语言头,这不像正则表达式和替换那么简单。

于 2013-10-03T07:43:09.360 回答
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]
于 2013-10-03T07:47:15.043 回答