我必须将我的网站从https://www.example.com/重定向到https://website.com/。
SSL已正确安装在我的服务器上。
我使用的是Apache,必须使用Apache ( httpd.conf/ssl.conf或.htaccess)来完成。
我已经使用了几乎所有的方法,我可以寻找,但没有一个对我有用。
http://www.example.com/正确地重定向到https://example.com/http://example.com/正确地重定向到https://example.com/。但
https://www.example.com/ 没有正确地将重定向到https://example.com/。它给出了“无效证书错误”,当我在浏览器中添加异常(接受证书)时,它将重定向到https://example.com/。但是我不想添加这个异常(在浏览器中添加证书)。
请注意,我的SSL证书是为example.com而不是www.example.com颁发的。
以下是我的.htaccess规则和条件
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1%{REQUEST_URI} [R=301,QSA,NC,L]我也使用了以下方法,但这些方法也不起作用:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^example.com$ [NC]
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]也用过这个,但没有运气
RewriteEngine On
RewriteCond %{HTTP_HOST} !^example.com$ [NC]
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]这也没什么好运气的
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]我尝试过5-6个其他解决方案(类似于上面),但没有一个有效。所有这些模式都适用于我前面提到的前两种模式,但没有一种模式适用于https://www。
请注意,.htaccess的这些条件已经达到,我的意思是.htaccess没有被忽略。我已经使用重定向验证了这一点,而且上面提到的两种模式也是有效的。
在httpd.conf/ssl.conf中,AllowOverride指令被设置为All。
我可以访问httpd.conf/ssl.conf。
PHP版本 5.5.29
Apache 2.4.6 (CentOS) OpenSSL/1.0.1e-FIPSPHP/5.5.29
Hostname:Port example.com:443
最后但并非最不重要的是,我的网站https://example.com/不会在Internet和Safari中打开并提供证书问题(错误),但是当我使用SSL检查器(多个)检查域时,所有SSL检查程序都会提到SSL已正确安装。
查看这张图片,这将更好地解释事情:

完整的.htaccess如下所示:
Options +FollowSymlinks
DirectoryIndex index.html Home.php index.php
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*)
RewriteRule ^.*$ https://%1/$1 [R=301,L]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://{REQUEST_URI} [L,R=301]
RewriteRule ^(blogs)($|/) - [L]
RewriteRule ^(.*)/$ index.php?mod=resturants&name=$1&%{QUERY_STRING} [L]
RewriteRule ^$ Home.php [L]
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_URI} /+[^\.]+$
RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]
</IfModule>发布于 2015-10-09 19:13:06
请注意,我的SSL证书是为website.com而不是www.website.com颁发的。
这是你的主要问题。如果没有用于www的有效证书,就永远无法从www重定向到。原因是在web服务器处理任何其他内容(包括任何重写规则)之前,首先处理连接。因此,当浏览器使用https协议连接到站点时,它必须检查有效的证书,因为这正是SSL的本质,以确保连接是安全的。完成之后,Apache将处理您已有的web服务器规则,比如重写。因此,在正确完成连接之前,它不能从www重写到非www。为了实现这一点,您还需要为www提供一个证书。重写规则不是问题所在。
这个话题经常出现,无计可施。这就是SSL/加密的本质以及它的工作方式。
购买证书时,不要只购买域名,因为一些CA只会给你提供没有www的证书。但是,如果在您的CSR中使用www.example.com,您将在99%的时间内获得相同证书中的www.example.com和example.com。那你就不用担心这个问题了。他们愚蠢,便宜,所以这不应该是一个问题,以获得另一个。SSls.com有4.99个/年。
发布于 2015-10-09 14:08:41
你试过这个吗?
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*)
RewriteRule ^.*$ https://%1/$1 [R=301,L]https://stackoverflow.com/questions/33039666
复制相似问题