301通过.htaccess在子文件夹中重定向非www

时间:2015-02-08 19:59:33

标签: .htaccess redirect

我正在尝试使用.htaccess文件将所有非www页面重定向到我网站上的www页面。这是一个多语言网站,它在丹麦语的根文件夹中设置了一个站点,在www.domain.com/en /。中设置了英文版本。

我得到了非www重定向工作丹麦部分,但我在英文子文件夹中遇到问题。每个文件夹都有自己的.htaccess。

在丹麦语结束时,我的要求如下:

#301 redirect #RewriteEngine On

RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule ^(.*) http://www.example.com/$1 [R=301] 

我认为英语版本应该是这样的:

#RewriteEngine On

RewriteCond %{HTTP_HOST} ^example\.com/en/$
RewriteRule ^(.*) http://www.example.com/en/$1 [R=301] 

我真的很感激我能得到的任何帮助。

1 个答案:

答案 0 :(得分:0)

您不能将路径包含在%{HTTP_HOST}变量的一部分中,仅包含主机名。因此,RewriteCond %{HTTP_HOST} ^example\.com/en/$ 总是为假。

您可以将路径作为重写规则中正则表达式的一部分进行匹配:

RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule ^en/(.*)$ http://www.example.com/en/$1 [R=301] 

但这没有任何意义。如果您将这些规则放在/en/文件夹中,那么您根本不需要检查/en/

RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule ^(.*)$ http://www.example.com/en/$1 [R=301] 

如果您尚未请求以/en/

开头的内容,则规则不会得到处理