Принудительно перевести все страницы на https в htaccess с сохранением текущих правил

#.htaccess #mod-rewrite

#.htaccess #мод-перезапись

Вопрос:

У меня есть текущий htaccess в папке, расположенной в http://www.mydomain.com/dev

 RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /dev/index.php [L]
  

Я попытался изменить свою последнюю строку на:

 RewriteRule ^(.*)$ https://www.mydomain.com/dev/index.php [L]
  

Однако это не сработало, и сайт выдал ISE. Все должно выполняться mydomain.com/dev/index.php .

Ответ №1:

Самый простой способ добиться этого — создать отдельный виртуальный хост на порту 80, который перенаправляет все на https. Должно выглядеть примерно так в вашей конфигурации Apache:

 <VirtualHost *:80>
    ServerName example.com

    # Force usage of SSL
    Redirect / https://example.com/
</VirtualHost>

<VirtualHost 127.0.0.1:443>
    DocumentRoot /var/www/vhosts/example.com/httpdocs
    ServerName example.com
</VirtualHost>
  

Это всегда должно перенаправлять на ssl-эквивалент запрашиваемой страницы, сохраняя при этом все остальные ваши правила без изменений. Если у вас нет доступа к глобальной конфигурации Apache (например, на компьютерах с общим хостингом), попросите вашего хостера применить вышеуказанное к вашей записи vhost.