Blast Опубликовано 27.10.2024 в 19:37 Поделиться Опубликовано 27.10.2024 в 19:37 прислал заказчик инфу, что при переходе на сайт по ссылке с Яндекс.товаров сайт отдает 403 ошибку. общение с хостером ничего не дало, начал выяснять в чем тут дело. в url добавляется utm метка utm_referrer=https://yandex.ru/products/search?text=текст на сервак естественно приходит перекодированный вариант вида https://domain/path-to-product?utm_referrer=https%3A%2F%2Fyandex.ru%2Fproducts%2Fsearch%3Ftext%3D%D1%82%D0%B5%D0%BA%D1%81%D1%82 методом проб выяснил что если заменить %3F на что-то другое, то сайт вполне работает. похоже, что обновление безопасности апача запретило использовать hex-перекодированный символ "?" в "%3F" в url. наткнулся на такое обсуждениеhttps://stackoverflow.com/questions/78729429/403-forbidden-when-url-contains-get-with-encoded-question-mark-unsafeallow3f заменил в .htaccess строку RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA] на RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA,UnsafeAllow3F] работать то работает, но интересно насколько это безопасно и есть ли другие решения, учитывая что и php'шный urlencode и js'овский encodeURIComponent по-прежнему кодируют этот символ в %3F 2 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Tom Опубликовано 28.10.2024 в 04:29 Поделиться Опубликовано 28.10.2024 в 04:29 В схожей ситуации , данное решение предложил сам хостер. Ну и как вариант от меня (так же нужно проверять). # Преобразование UTM-меток от Яндекс.Товаров RewriteCond %{QUERY_STRING} utm_referrer=https%3A%2F%2Fyandex\.ru%2Fproducts(.*) RewriteRule ^(.*)$ $1?utm_source=yandex&utm_medium=products [R=301,L] Применяет UnsafeAllow3F только для трафика с Яндекс. Сохраняет UTM-метки в исходном виде Не создает дополнительных редиректов Минимально влияет на существующую логику работы сайта 2 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.