Я создаю решение для кэширования на сайте WooCommerce с несколькими валютами. Проблема заключается в том, что после кэширования страницы будет отображаться версия валюты, которая была кэширована. Я пытаюсь решить эту проблему, добавив строку запроса? Wmc-currency = EUR или? Wmc-currency = USD, это работает. Я поместил перенаправление в htaccess, чтобы при попытке доступа к странице без строки запроса она перенаправляла вас на страницу со строкой запроса на основе файлов cookie. Но когда я нажимаю, скажем, / offer / и cookie установлен, сервер будет обслуживать кэшированную версию страницы, которая не имеет строки запроса. Я знаю, странно. Итак, вместо того, чтобы искать решение для кэширования сервера, я скорее генерирую ссылки, которые уже содержат строку запроса, и затем будет предоставлена правильная кэшированная версия. Есть ли способ создать фильтр или функцию, которая может изменить URL в меню? Или было бы проще иметь 2 разных меню и переключаться между ними? Спасибо за любое предложение!
Я нашел много возможных способов сделать это, но ничего не нашел.
Перенаправление, которое я использую для строки запроса
<IfModule LiteSpeed>
RewriteEngine on
CacheLookup on
### add EUR query string ###
RewriteCond %{QUERY_STRING} ^$
RewriteCond %{HTTP_COOKIE} wmc_current_currency=EUR
RewriteCond %{REQUEST_URI} (^/$) [NC,OR]
RewriteCond %{REQUEST_URI} (produkt) [NC]
RewriteRule ^(.*)$ https://eshop.eu/$1?wmc-currency=EUR [L,NE,R=301]
### add USD query string ###
RewriteCond %{QUERY_STRING} ^$
RewriteCond %{HTTP_COOKIE} wmc_current_currency=USD
RewriteCond %{REQUEST_URI} (^/$) [NC,OR]
RewriteCond %{REQUEST_URI} (produkt) [NC]
RewriteRule ^(.*)$ https://eshop.eu/$1?wmc-currency=USD [L,NE,R=301]
</IfModule>