从 https:// 重定向到 https://www
Posted
技术标签:
【中文标题】从 https:// 重定向到 https://www【英文标题】:redirect from https:// to https://www 【发布时间】:2019-01-31 15:54:38 【问题描述】:Given 是我的 .htaccess 规则集。
我可以重定向
http://example.com
到 https://www.example.com
http://www.example.com
到 https://www.example.com
但是
https://example.com
没有重定向到https://www.example.com
在 Firefox 上出现 This Connection is Untrusted 错误
@Tobias K. google.com Subject Alt Name
是
Not Critical
DNS Name: www.google.com
但它仍然从https://google.com
重定向到https:www.google.com
.htaccess
Options -Indexes
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %HTTPS off [OR]
RewriteCond %HTTP_HOST !^www\. [NC]
RewriteRule (.*) https://www.example.com%REQUEST_URI [R=301,L]
RewriteCond %REQUEST_URI .html$
RewriteRule ^(.*).html$ /$1.php [R=301,L]
</IfModule>
我在 apache 2.2.34 (AWS linux) 上使用虚拟主机配置
Given 是我的虚拟主机配置vhost.conf
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com example.com
DocumentRoot /var/www/vhosts/example.com
ServerAdmin itsupport@example.com
ErrorLog /var/www/vhosts/logs/example.com/error_log
<Directory /var/www/vhosts/example.com>
AllowOverride All
</Directory>
</VirtualHost>
ssl.conf
<VirtualHost *:443>
DocumentRoot /var/www/vhosts/example.com
ServerName example.com
ServerAlias www.example.com example.com
SSLEngine on
SSLCertificateFile /home/ec2-user/new_cert/www_parentcompany_com.crt
SSLCertificateKeyFile /home/ec2-user/www_parentcompany_com.key
SSLCertificateChainFile /home/ec2-user/new_cert/DigiCertCA.crt
<Directory /var/www/vhosts/example.com>
AllowOverride All
</Directory>
</VirtualHost>
如果我遗漏了什么,请告诉我。
尝试了给定的解决方案,但没有运气。htaccess redirect to "https://www."htaccess redirect to https://www
谢谢。
【问题讨论】:
您的证书可能仅在www.example.com
上有效。因此,当您尝试使用它在example.com
上提供网站(或只是重定向)时,您会收到警告。如果您可以重新颁发证书,请将两个名称都包含为subjectAltName
s。
这已经解释过了——我可以在上面更深入地解释——这里:***.com/a/10931004/7362396
@TobiasK。 google.com Subject Alt Name
不是关键 DNS 名称:www.google.com 但它仍然从 https://google.com
重定向到 https:www.google.com
我了解到您的主域是 www。如果您想避免重定向时出现“不可信”错误,您仍然需要非 www 变体的有效证书。就像我的链接答案或@Ufuk Tan 答案中所述。
这个问题解决了吗?如果不是,https://www.example.com
是否可以访问?
【参考方案1】:
这个问题可能有两个原因:
1。来自 SSL 证书:
既然你说:
在 Firefox 上出现 This Connection is Untrusted 错误
有些 CA 会自动添加带有 www.example.com 的 example.com 版本,有些则不会。确保您的 SSL 证书对 www.example.com 和 example.com
均有效您可以使用以下命令检查您的证书:
openssl s_client -connect example.com:443 | openssl x509 -noout -text
你可以看到 google 有 *.google.com 和 google.com
2。从 Apache 虚拟主机:
据此...
我可以重定向
http://example.com 到 https://www.example.com
http://www.example.com 到 https://www.example.com
...还有这个...
但是https://example.com 没有重定向到https://www.example.com
...我在想,你成功地完成了http的配置,因为两个
http://www.example.com http://example.com正在重定向到https://www.example.com。
但是从 https://example.com 重定向到 https://www.example.com 必须在 html (:443) 虚拟主机配置中指定。这些规则不能由 http (:80) 虚拟主机配置文件确定。
为了解决这个问题,你必须将这些重写规则添加到 ssl.conf 文件中:
RewriteEngine on
RewriteCond %HTTP_HOST !^www\. [NC]
RewriteRule ^ https://www.example.com%REQUEST_URI [L,NE,R=permanent]
所以,它可能是这样的:
<VirtualHost *:443>
DocumentRoot /var/www/vhosts/example.com
ServerName example.com
ServerAlias www.example.com example.com
RewriteEngine on
RewriteCond %HTTP_HOST !^www\. [NC]
RewriteRule ^ https://www.example.com%REQUEST_URI [L,NE,R=permanent]
SSLEngine on
SSLCertificateFile /home/ec2-user/new_cert/www_parentcompany_com.crt
SSLCertificateKeyFile /home/ec2-user/www_parentcompany_com.key
SSLCertificateChainFile /home/ec2-user/new_cert/DigiCertCA.crt
<Directory /var/www/vhosts/example.com>
AllowOverride All
</Directory>
</VirtualHost>
【讨论】:
以上是关于从 https:// 重定向到 https://www的主要内容,如果未能解决你的问题,请参考以下文章