客户端网站使用几个导致相同内容的域,这对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()中)。