У меня есть клиент, которому нужно установить Varnish на его сервере. Он русскоговорящий, и у него есть интернет-магазин со следующим примером URL, который нужно исключить из кеша (корзина
это страница корзины).
www.example.com/корзина/
Итак, есть ли какой-то особый способ использования нелатинских символов в VCL, поскольку он, похоже, не работает для меня. Я пробовал следующее (фактический код длиннее этого и работает для других веб-страниц, это просто для того, чтобы показать вам пример):
if (
! req.url ~ "(...|корзина/|...)"
# or URLencoded:
! req.url ~ "(...|%D0%BA%D0%BE%D1%80%D0%B7%D0%B8%D0%BD%D0%B0/|...)"
)
{ unset req.http.cookie; }
У меня оба вроде как-то не работают - мои правила не срабатывают. Итак, как мне использовать нелатинские символы в VCL?
Нелатинские символы в URL должны быть закодированы И в нижнем регистре:
tr "[A-Z]" "[a-z]" < <(php -r 'echo( urlencode("корзина") . PHP_EOL );')
Итак, это будет работать:
req.url ~ "(...|%d0%ba%d0%be%d1%80%d0%b7%d0%b8%d0%bd%d0%b0|...)" ...
Это не будет:
req.url ~ "(...|%D0%BA%D0%BE%D1%80%D0%B7%D0%B8%D0%BD%D0%B0/|...)" ...
req.url ~ "(...|корзина/|...)" ...