由于太长和太复杂的原因(涉及多层公司繁文tape节导致别人不购买我要求的通配符SSL证书),我必须设置一个域来将所有请求redirect到https:// www .example.com – 与www子域的安全协议。
编辑:SSL证书只对www.xyz.com域有效。
所以: http : //example.com,http : //www.example.com和https://example.com都应该redirect到https://www.example.com 。
我的.htaccess-fu在最好的情况下是弱的,我似乎无法得到这个工作。 注意:如果这有所作为,则在Media Temple上托pipe。
到目前为止,我的.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都redirect到https://www.example.com ,所以耶。 但是, https://example.com 不会redirect到https://www.example.com ,因此会引发安全警告页面:
这可能不是你正在寻找的网站!
您试图访问example.com ,但是实际上您已经到达了将自己标识为www.example.com的服务器。 这可能是由于服务器configuration错误或更严重的原因造成的。 您networking上的攻击者可能试图让您访问假冒(可能有害)版本的example.com 。
你不应该继续,特别是如果你以前从来没有看到这个网站的警告。
任何帮助,让我通过这一个最后的驼峰将非常感激!
您需要一个对example.com和www.example.com都有效的证书,如果您要将这些请求重写为www.example.com (或者两个独立的证书可以完成这个)。 这是没有办法的。
@ 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]
颠覆规则;-)
我正在使用这个,我有你的问题
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。
这是一个非常复杂的问题。 互联网上的大多数教程都会告诉你,像Simbus82一样,只需要在htacess中反转一些代码。 这不会总是工作(特别是如果你有一个SSL在Apache前卸载设备)
你有几个select来解决这个问题:
我无法解释为什么,但看起来像SSL协议检查域/子域证书问题,在处理请求到Apache之前。
我的.htaccess知识也很薄弱,但是替代解决scheme呢?
你能把所有的http://example.comredirect到http://example.com/redirect.html并在那里点击一个button吗? 在页面上解释你在做什么。
你甚至可以在JavaScript中做定时redirect吗?