【发布时间】:2016-01-07 11:38:24
【问题描述】:
我必须将我的网站从 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-fips PHP/5.5.29
主机名:端口 example.com:443
最后但并非最不重要的一点是,我的网站 https://example.com/ 无法在 Internet Explorer 和 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>
【问题讨论】:
-
https://{REQUEST_URI} -
@hjpotter92 什么东西?请详细说一下,这玩意我还不够好。
-
检查图片,如果这可以帮助你i.imgur.com/lOy65rs.jpg
-
应该是
https://%{HTTP_HOST}%{REQUEST_URI} -
不走运 :( 同样的问题。如果你有时间,请阅读下面我与 Rizwan Ranjha 的对话并检查此图片。网站在 IE 和 Safari 中无法运行,i.imgur.com/lOy65rs.jpg
标签: apache .htaccess mod-rewrite ssl no-www