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

Перенаправление с http на https в Apache

Это канонический вопрос о перенаправлении с http на https в Apache

Связанный:

У меня есть веб-сервер Appache, который обслуживает оба http://example.com/ и https://example.com/. Я хочу перенаправить все HTTP-запросы на https. В настоящее время я использую это .htaccess правило перенаправления HTTP-запросов на https.

RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 

Он работает, как ожидалось, для example.com но то же правило не работает для дополнительных ссылок, когда я получаю доступ к существующим ссылкам, например example.com/about он по-прежнему будет загружаться в http, для существующих ссылок перенаправление не происходит.

Как я могу заставить Apache перенаправлять все HTTP-запросы на https?

Вы должны настроить виртуальные хосты Apache для выполнения этой работы. RewriteMod не подходит для этого случая и .htaccess тоже нет.

В вашем httpd.conf или его эквиваленте используйте следующие строки в соответствии с вашими потребностями. Отредактируйте его для своего домена и сайта.

<VirtualHost *:80>
   ServerName www.example.com example.com
   Redirect permanent / https://example.com/
</VirtualHost>

<VirtualHost _default_:443>
   ServerName example.com
   DocumentRoot /usr/local/www/apache2/htdocs
   SSLEngine On

   ** Additional configurations here **

</VirtualHost>

Надеюсь, это проясняет процедуру.

На виртуальном хостинге, когда у вас нет лучших вариантов, вы можете изменить свое правило перезаписи в .htaccess:

RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

Во-первых, RegEx в начале соответствует всем запросам, включая все, что находится за доменом.

Затем клиенту возвращается код результата HTTP 301 (перемещен навсегда) вместе с новым URL-адресом. Большинство современных браузеров запоминают новый URL-адрес, в данном случае httpS, и автоматически перенаправляют на новый URL-адрес при следующем вызове веб-сайта пользователем.

Надеюсь, это поможет, с уважением