У меня в настройке apache2 происходит очень странная вещь. Я просто хочу перенаправить HTTP на HTTPS. Я перепробовал все возможные способы, например:
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
Я поместил это в /etc/apache2/apache2.conf
, но это просто не сработало.
Затем я поместил это в ]
, и он работает, но вместо этого я получаю
Эта страница не работает
kanzan.se перенаправлял вас слишком много раз.
Это потому, что я использую порт 80 за сервером кеширования (Varnish), а перед ним я использую
. Все работает нормально, за исключением этого.
У меня даже была эта проблема до того, как я поместил туда Varnish, но затем я мог решить ее, переписав в
, поскольку это сработало.
] Почему-то Apache не заботится о своем основном файле конфигурации /etc/apache2/apache2.conf
?
Я поместил это в
/etc/apache2/apache2.conf
, но он просто не работал.
Если под этим вы имеете в виду, что помещаете директивы прямо в сервер в контексте server , то директивы ничего не сделают, если у вас есть директивы mod_rewrite в
, к которому осуществляется доступ. Вам нужно будет включить наследование mod_rewrite (но вы можете этого не делать).
Если вы находитесь за прокси-сервером, который управляет вашим SSL, ваш сервер приложений всегда обслуживает контент через порт 80, поэтому HTTPS
серверная переменная никогда не бывает на
- следовательно, ваш цикл перенаправления.
Однако прокси-сервер должен установить заголовок запроса X-Forwarded-Proto
, указывая (для вашего приложения server), какой протокол используется. например. Либо http
, либо https
. Итак, вы, вероятно, могли бы изменить свою директиву, чтобы вместо этого читать следующее:
RewriteCond %{HTTP:X-Forwarded-Proto} ^http$ [NC]
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
Опять же, ваша конфигурация может устанавливать какой-то другой нестандартный заголовок (или переменную среды), который вам нужно будет использовать вместо этого.