由于原因太长且复杂(涉及多层企业繁文缛节,导致其他人不购买我申请的通配符 SSL 证书),我必须设置一个域名将所有请求重定向到https://www.example.com– 与子域名的安全协议www
。
编辑:SSL 证书仅对 www.xyz.com 域有效。
所以:http://example.com,http://www.example.com, 和https://example.com是否应全部重定向至https://www.example.com。
我的 .htaccess-fu 很弱,似乎无法让它工作。注意:如果这有区别的话,托管在 Media Temple 上。
到目前为止,我的.htaccess 文件如下所示:
RewriteEngine On
RewriteCond %{HTTPS} !^on$
RewriteRule (.*) https://www.example.com/$1 [R,L]
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
两个都http://example.com和http://www.example.com重定向至https://www.example.com,所以是的。然而,https://example.com是不是重定向至https://www.example.com并因此抛出一个安全警告页面:
这可能不是您正在寻找的网站!
您尝试联系示例.com,但实际上你访问的服务器自称是www.example.com。这可能是由于服务器配置错误或更严重的问题造成的。网络上的攻击者可能试图让您访问假冒(可能有害)版本的示例.com。
您不应该继续,特别是如果您以前从未见过此站点的警告。
任何能帮助我渡过这最后的难关的帮助都将不胜感激!
答案1
如果您要重写这些请求example.com
,则需要一个对两者都有效的证书(或两个单独的证书来完成此操作)。没有办法解决这个问题。www.example.com
www.example.com
答案2
@Simbus82 关于颠倒规则的说法是对的。这是一种更通用的方法。
RewriteEngine On
# ensure www.
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# ensure https
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
答案3
颠倒规则;-)
我正在用这个,也遇到了你的问题
RewriteEngine On
RewriteCond %{HTTP_HOST} ^site.it [NC]
RewriteRule (.*) http://www.site.it/$1 [L,R=301]
RewriteCond %{SERVER_PORT} ^443$ [OR]
RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ http://www.site.it/$1 [R=301,L]
首先重写为 www,然后检查 https。
答案4
我对 .htaccess 的了解也很薄弱,但有其他解决方案吗?
你能重定向所有http://example.com到http://example.com/redirect.html并有一个他们可以点击的按钮?在页面上解释你在做什么。
你甚至可以用 JavaScript 或其他方法将其设为定时重定向吗?