пытается сделать http на https на основе значения заголовка запроса, но не удается каким-то образом. Может ли кто-нибудь помочь мне здесь.
request - если значение заголовка xyz и равно Y, то обслуживают http-страницы, для всех остальных запросов - https-страницы. сразу же у меня есть другое условие внутри прокси-модуля, которое нужно выполнить, но оно не выполняется. также невозможно увидеть трассировки журнала для перезаписи в журналах ошибок.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:xyz} !=Y [NC] --> if header contains xyz and its value is not equal to Y
Rewrite ^/?(.*) https://%{SERVER_NME}/$1 [R,L] --> server https page.
LogLevel alert mod_rewrite.c:trace3 --> Log the rewrite activity.
<IfModule mod_proxy_http.c> --> after above activity is completed continue this activity.
RewriteCond ...
RewriteCond ...
RewriteRule ...
<Ifmodule>
<IfModule>
Версия Apache: 2.4
Я только починил твою RewriteRule
и добавлена дополнительная проверка протокола. Если у вас разные vhosts для HTTP и HTTPS, вы можете убрать проверку протокола. Просто хотел убедиться, что нет цикла перенаправления, если вы уже находитесь на сайте HTTPS.
RewriteEngine On
# make sure we only redirect if protocol is HTTP, remove if not needed
RewriteCond %{HTTPS} =off
RewriteCond %{HTTP:xyz} !=Y [NC]
RewriteRule (.*) https://%{SERVER_NAME}$1 [R,L]
Чтобы проверить, работает ли заголовок, я использовал wget
:
# redirect to HTTPS
wget -S -O - --header='xyz:foo' http://localhost
# stay on HTTP
wget -S -O - --header='xyz:y' http://localhost