Varnish - использование нелатинских символов URL в VCL

У меня есть клиент, которому нужно установить 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?

1 ответ

Да, к сожалению, мне нужно ответить на свой вопрос, извините за это:)

Нелатинские символы в URL должны быть закодированы И в нижнем регистре. Так что это будет работать:

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 ~ "(...|корзина/|...)" ...

Как я узнал? Я использовал магический инструмент под названием varnishlog:)

Другие вопросы по тегам