这个.htaccess文件有什么问题?

时间:2015-02-25 16:08:05

标签: apache .htaccess mod-rewrite redirect

我有一个部分工作的.htaccess文件,在我的生活中无法找出错误。

这是我的目标:我有example.com我想要的规范形式www.example.com。我的工作还可以。我还有一个位于/lang/chinese文件夹中的子域,我想将其解析为china.example.net。这也很好。最后,我有(停放的)域名example.net,我希望将其重定向到example.com,然后将其解析为www.example.com

这是最后一部分不起作用。如果我将www.example.net放在浏览器中,则会保留在地址栏中。

以下是我的.htaccess文件的相关部分:

Options +FollowSymlinks
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} china.example.com [NC]
RewriteRule ^(.*)$ http://china.example.com$1 [L,R=301]


RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteRule ^(.*)$ http://www.example.com$1 [L,R=301]
RedirectMatch 301 ^/lang/chinese/(.*)$ http://china.example.com/$1


RewriteCond %{http_host} ^example\.net [nc]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=permanent,nc,L]

显然我在这里做错了。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

对于这条规则:

RewriteCond %{http_host} ^example\.net [nc]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=permanent,nc,L]

^告诉正则表达式匹配行的开头。这意味着你从来没有真正在那里搜索“www”。

我相信你会想要改变:

RewriteCond %{HTTP_HOST} ^(www\.)?example\.net [nc]

Apache的信息: