从https://重定向到https:// www

时间:2018-08-25 11:21:14

标签: apache .htaccess amazon-ec2 https http-redirect

给出我的 .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

谢谢。

1 个答案:

答案 0 :(得分:1)

此问题可能是由于两个原因引起的:

1。通过SSL认证:

自从你说:

  

在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

2。从Apache虚拟主机:

据此...

  

我能够重定向

     

http://example.comhttps://www.example.com

     

http://www.example.comhttps://www.example.com

...还有这个...

  

但是https://example.com不会重定向到https://www.example.com

...我在想,您已经成功完成了http的配置,因为两者

重定向到https://www.example.com

但是必须在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>