Перенаправлять домены http www и не-SSL на HTTPS без нескольких перенаправлений?


Я теряю сок ссылок при нескольких перенаправлениях.

Мне нужно перенаправить все версии домена на мой домен по умолчанию, т.Е.

https://example.com

Под всеми версиями домена я подразумеваю http://www, http://, https://www и https://. (index.php для всех.)

В настоящее время я использую приведенный ниже код. Все домены перенаправляются на https://, но не напрямую. Если я наберу http://www, он будет перенаправлен 3 раза, как на картинке. Мне все еще нужно перенаправить index.php.

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.example.com [NC]
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>

Я использую "Перенаправление Путь" расширение браузера Google Chrome для отслеживания перенаправлений.

Вы можете увидеть перенаправление 3 раза:

You can see redirect 3 times

Вы можете увидеть перенаправление 2 раза:

You can see redirect 2 times

Author: MrWhite, 2016-12-17

1 answers

Попробуйте использовать больше виртуальных хостов и перенаправлять вместо перезаписи.

<VirtualHost *:80>

  ServerName example.com
  ServerAlias www.example.com
  Redirect permanent / https://www.example.com/

</VirtualHost>

<VirtualHost *:443>

  ServerName www.example.com
  Redirect permanent / https://example.com/
  ...
  (put your HTTPS config & path to certs here for the redirect to work)

</VirtualHost>

<VirtualHost *:443>

  ServerName example.com
  ...
  (This is your destination VirtualHost)

</VirtualHost>
 2
Author: Tom Brossman, 2016-12-17 08:31:59