Назад | Перейти на главную страницу

Правило перезаписи Apache 2.4 на основе значения заголовка

пытается сделать 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