Мои серверы Apache находятся за ALB / ELB. Я прекращаю SSL на балансировщике нагрузки. Балансировщик нагрузки прослушивает как 80, так и 443. Я хочу перенаправить все http-запросы на https.
У меня есть это правило перезаписи в конфигурации vhost:
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule .* https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent]
Это работает, но проблема в том, что у меня также есть перенаправления в файле htaccess. Когда перенаправление происходит через файл htaccess, он сначала перенаправляет на http, а затем перенаправление конфигурации vhost берет его и перенаправляет на https. Я хочу устранить лишнее перенаправление http.
http://mysite.example.com/sub
301
https://mysite.example.com/sub
301
http://mysite.example.com/newsub - это перенаправление htaccess
301
https://mysite.example.com/newsub
200
Я бы хотел обойтись, если сначала перенаправить htaccess на http. Я могу обойти это, добавив https://%{HTTP:Host}, чтобы переписать правила. Это лучший способ сделать это:
RewriteRule ^sub$ https://%{HTTP:Host}/newsub [R=301,L]