перенаправление с https: // на https://www - PullRequest
0 голосов
/ 25 августа 2018

Дано мое .htaccess установленное правило.

Я могу перенаправить

http://example.com на https://www.example.com
http://www.example.com на https://www.example.com

Но https://example.com не перенаправляет на https://www.example.com

Даёт Это соединение ненадежно Ошибка в Firefox

@ Тобиас К. 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>

Я использую конфигурацию vhost на 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перенаправление на https://www."
htaccess перенаправление на https://www

Спасибо.

1 Ответ

0 голосов
/ 25 августа 2018

Эта проблема может возникать по двум причинам:

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.com до https://www.example.com

http://www.example.com до https://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>
...