Правило добавления url сегмента по наличию cookie?

Здравствуйте

Сайт на Wordpress с плагином кэширования WPRocket

У меня стала задача перенаправить первый раз вошедшего пользователя на страницу в нужной языковой локалью, только для главной страницы.
Причем по дефолту в плагине переводов стоит локаль ru а перенаправлять надо на локаль uk. Поменять дефолтную локаль не вариант, т.к. слетит вся индексация.

Проверить что это новый пользователь можно по отсутствию cookie с ключом "language"

И все бы ничего, можно было бы проверить это в коде и сделать редирект. Но стоит плагин кэшировния который настроен через htaccess и если страница закэширована вообще не запускает код, а просто отдает готовую страницу.

Я попробовал дописать свое правило. Если мы на главной и нет сегмента \uk и нет cookie language то добавить сегмент \uk

Привожу кусок файла htaccess с правилами которые были и которые я добавил
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} on [OR]
RewriteCond %{SERVER_PORT} ^443$ [OR]
RewriteCond %{HTTP:X-Forwarded-Proto} https
RewriteRule .* - [E=WPR_SSL:-https]
RewriteCond %{HTTP_ACCEPT} image/webp
RewriteCond "%{DOCUMENT_ROOT}/wp-content/cache/wp-rocket/%{HTTP_HOST}%{REQUEST_URI}/.no-webp" !-f
RewriteRule .* - [E=WPR_WEBP:-webp]
RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteRule .* - [E=WPR_ENC:_gzip]

#Start:   добавление сегмента /uk
RewriteCond %{REQUEST_METHOD} GET
RewriteCond %{QUERY_STRING} =""
RewriteCond %{HTTP:Cookie} !^.*language.*$ [NC]
RewriteCond %{REQUEST_URI} ^(www)?\.mysite\.ua$ [NC]
RewriteRule .* "%{REQUEST_URI}%/uk" [L]
#End

RewriteCond %{REQUEST_METHOD} GET
RewriteCond %{QUERY_STRING} =""
RewriteCond %{HTTP:Cookie} !(wordpress_logged_in_.+|wp-postpass_|wptouch_switch_toggle|comment_author_|comment_author_email_) [NC]
RewriteCond %{REQUEST_URI} !^(/(.+/)?feed/?.+/?|/(?:.+/)?embed/|/uk/checkout/(.*)|/uk/cart/|/uk/my-account/(.*)|/wc-api/v(.*)|/(index\.php/)?wp\-json(/.*|$))$ [NC]
RewriteCond %{HTTP_USER_AGENT} !^(facebookexternalhit).* [NC]
RewriteCond "%{DOCUMENT_ROOT}/wp-content/cache/wp-rocket/%{HTTP_HOST}%{REQUEST_URI}/index%{ENV:WPR_SSL}%{ENV:WPR_WEBP}.html%{ENV:WPR_ENC}" -f
RewriteRule .* "/wp-content/cache/wp-rocket/%{HTTP_HOST}%{REQUEST_URI}/index%{ENV:WPR_SSL}%{ENV:WPR_WEBP}.html%{ENV:WPR_ENC}" [L]
</IfModule>
# END WP Rocket


Но првила не срабатывают.

Прошу помощи в правильном написании этого набора правил

Заранее благодарю.
  • Вопрос задан
  • 45 просмотров
Решения вопроса 1
@dodo512
RewriteCond %{THE_REQUEST} "^GET / "
RewriteCond %{HTTP:Cookie} !language
RewriteRule ^$ /uk [L,R=302]
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы