Итак, я просмотрел другие подобные вопросы, и они предлагают решения, но ни один из них по какой-то причине не работает. Итак, для начала мой ELB настроен так, что
HTTP (incoming) -> HTTP (instance)
HTTPS (incoming) -> HTTP (instance)
Таким образом, оба трафика должны поступать на порт 80. И это работает, например, когда я захожу на свой сайт, используя http://mydomain.com или https://mydomain.com, он может отображаться, даже если у меня есть VirtualHost только для порта 80.
Проблема заключается в попытке переписать весь http-трафик на https. Я делаю это на основе портов (проверьте, если !443 и перепишите на https), но теперь это не сработает, когда все переходит на 80. Итак, я использую сервер Apache и имею это правило перезаписи.
RewriteEngine on
RewriteCond %{HTTP_HOST} www.(.+) [OR,NC] # Added
RewriteCond %{HTTP:X-Forwarded-Proto} !https [NC]
RewriteRule ^/?(.*) https://mydomain.com%{REQUEST_URI} [L,R=301]
Но это никогда не работает. Есть ли другие строки, которые мне не хватает? Есть ли способ проверить, соответствует ли это условие? Я пробовал использовать как !https, так и http в качестве условия, но ни одно из них не сработало.
изменить: немного изменил мой RewriteRule на то, что он есть сейчас, и он все еще не работает. Я добавил дополнительное условие для перезаписи www, и оно работает. HTTP:X-Forwarded-Proto либо отсутствует, либо не установлен балансировщиком нагрузки.
редактировать: ошибка была ДЕЙСТВИТЕЛЬНО глупой. Я просто подключался по SSH не к тому экземпляру. Спасибо, что терпите мою глупость