在Apache 2上强制执行https +删除www +重定向别名到主域名

时间:2014-02-08 13:20:49

标签: apache .htaccess mod-rewrite ssl

客户端网站使用几个导致相同内容的域,这对SEO(“重复内容”)不利。 example.com,www.example.com,foo.com,foo.example.com,www.foo.com和www.foo.example.com

此外,该网站现在必须对所有请求使用https。

因此,现在的任务是强制单独使用https://foo.example.com,因为SSL证书适用于* .example.com。应将所有其他域重定向到https://foo.example.com

我正在尝试通过网站的根文件夹.htaccess文件中的网址重写来实现这些要求。

Rewritecond %{HTTP_HOST} !^example\.com
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]

除了一个用例外,它有效:http://example.com

指向http://example.com/hello的请求不会被重写为https://example.com

所以我试过

RewriteCond %{HTTPS} !^on [OR]
Rewritecond %{HTTP_HOST} !^example\.com
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]

但是我得到了“重定向循环”错误。这意味着条件总是正确的,但为什么呢?

服务器详细信息

服务器:Red Hat Enterprise Linux Server 6.5版上的LAMP(Apache 2)

更新

我认为我的重写规则是正确的,问题发生在上游。系统管理员告诉我,他们的网络将443个请求重定向到本地计算机的:80端口。此外,https网址上的phpinfo()显示没有SSL标记(HTTPS = on不会出现在phpinfo()中)。

0 个答案:

没有答案