Первое примечание: этот сайт размещен на WPEngine (кэширование лаков), но я не могу воспроизвести проблему на другом сервере.
Нам нужно иметь доступ к переменной PHP $ _GET на некоторых страницах. Для тестирования я изменил наш WordPress header.php, чтобы сделать var_dump в первой строке.
Обычно все работает нормально. Однако, если строка URL содержит «utm_», каждая последующая переменная в $ _GET удаляется. Дополнительная странная часть заключается в том, что если я войду в WordPress, все будет хорошо.
Наш URL-адрес возврата Paypal выглядит так:
http://oururl.com/buy/thankyou/?utm_nooverride=1tx=xxxxyyyy …
Utm_nooverride заставляет $ _GET быть пустым массивом. Если я изменю его на «test = 1 & tx = xxxxyyyy», он будет работать нормально. Если я использую «utm_test = 1 & tx = xxxxyyyy», я снова получаю пустой массив.
В .htaccess нет ничего странного, только несколько стандартных строк WordPress.
Может ли быть что-то в хостинге, вызвавшем это?
WP Engine может иметь (неправильно) сконфигурированный Varnish, чтобы игнорировать параметры строки запроса, когда они ссылаются на переменные кампании Google Analytics. Возможно, они сделали это, поэтому они могут ссылаться на кеш страницы без строки запроса, поскольку переменные кампании читаются на стороне клиента (а не на стороне сервера) поставщиком аналитики. Поэтому игнорировать эти переменные на стороне сервера, по-видимому, не повлияет, и это повысит производительность для сайтов, сильно использующих отслеживание входящих сообщений Google Analytics.
Я говорю, что это возможно, потому что есть вопрос о переполнении стека, спрашивающий, как это сделать: «Отключение выбора пар атрибутов / значений querystring, поэтому лак не будет изменять их кеш» . Единственный способ узнать наверняка – это связаться с WP Engine.
Если кто-то другой сталкивается с той же проблемой, как я это делал, я разговаривал с командой поддержки WPEngine через Live chat и. Они исправили его в течение нескольких минут
Вот сокращенная расшифровка нашего чата: