Это канонический вопрос о перенаправлении с 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-адрес при следующем вызове веб-сайта пользователем.
Надеюсь, это поможет, с уважением