给出我的 .htaccess 规则集。
我能够重定向
http://example.com
至https://www.example.com
http://www.example.com
至https://www.example.com
但是
https://example.com
未重定向到https://www.example.com
在Firefox上提供此连接不受信任错误
@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)上使用vhost配置
给出是我的虚拟主机配置
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
谢谢。
答案 0 :(得分:1)
此问题可能是由于两个原因引起的:
自从你说:
在Firefox上提供此连接不受信任错误
某些CA会自动将example.com版本添加到www.example.com,有些则不会。确保您的SSL证书对 www.example.com 和 example.com
有效您可以使用以下命令检查证书:
openssl s_client -connect example.com:443 | openssl x509 -noout -text
您可以看到google具有* .google.com和google.com
据此...
我能够重定向
...还有这个...
...我在想,您已经成功完成了http的配置,因为两者
但是必须在htps(:443)虚拟主机配置中指定从 https://example.com 重定向到 https://www.example.com 。不能通过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>