Чтобы дать контекст, цель:
При использовании apache httpd мне нужно проверить контекстный сегмент запроса uri, который содержится в значении cookie, отправляемом в заголовке, прежде чем перенаправить пользователя на страницу-заставку для cookieподтверждение или предоставление им доступа к сайту.
С учетом следующего:
url: http://www.example.com/en/gb/main.html
cookie: ; acceptCookies = fr, en, de, it
Если языковой сегмент url = "en", и это входит в число принятых пользователями Cookies.Затем разрешите пользователю доступ к основному сайту, иначе перенаправьте пользователя на заставку.
Что я пробовал:
SetEnvIf Host ^ uriCountryCode=NUL
SetEnvIfNoCase Request_URI "^(.+)?\/([a-zA-Z]{2})\/[a-zA-Z]{2}\/.+$" uriCountryCode=$2
SetEnvIf Host ^ acceptedCookieList=EMP
SetEnvIf Cookie "(^|;\*)acceptedCookies=([^;]+)?" acceptedCookieList=$2
#1st.
<If "%{acceptedCookieList} =~ %{uriCountryCode}">
// Doesn't work
</If>
#2nd.
<If "env('acceptedCookieList') =~ env('uriCountryCode')">
// No luck
</If>
#3rd.
<If "env('acceptedCookieList') =~ /env('uriCountryCode')/">
// Now I'm just guessing
</If>
#4th.
RewriteCond %{acceptedCookieList} !%{uriCountryCode}
RewriteCond %{REQUEST_URI} !^/en/gb/splash.html$ [NC]
RewriteRule ^(.+)$ /mt/en/splash [L,R=301]
Недавно я узнал, что некоторые из этих модулей, например, env ('x ') не будет загружать переменные SetEnvIf из-за переменных SetEnvIf, загружаемых недостаточно рано, чтобы быть доступными, но я пытаюсь найти решение httpd для этой моей проблемы