Назад | Перейти на главную страницу

Проблемы с перезаписью всего трафика доменов http и https на URL на основе https

Я пытаюсь получить все варианты

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

всем перенаправить на

https://www.example.com

У меня есть следующий блок mod_rewrite:

RewriteEngine on
ReWriteCond %{SERVER_PORT} !^443$
RewriteCond %{HTTP_HOST} ^([a-z.]+)?example.com$ [NC]
RewriteCond %{HTTP_HOST} example.com$ [NC]
RewriteRule .? https://www.example.com%{REQUEST_URI} [R=301,L]

который, кажется, делает все, кроме одного:

https://example.com не перенаправляется на

https://www.example.com как и ожидалось

Если я убрал условие:

ReWriteCond %{SERVER_PORT} !^443$

так что он влияет как на http, так и на https, он по-прежнему ведет себя не так, как ожидалось.

Где я ошибаюсь, пожалуйста? Спасибо

Вы не можете выполнить перенаправление с SSL на SSL, используя .httaccess

Вам нужно будет использовать отдельную запись VirtualHost для каждого домена (при условии, что ваш веб-сервер поддерживает SNI):

<VirtualHost *:443>
    ServerName example.com
    Redirect 301 / https://www.example.com
    SSLCertificateFile /etc/ssl/example.com.crt
    SSLCertificateKeyFile /etc/ssl/example.com.key
</VirtualHost>