Blast Posted October 27, 2024 at 07:37 PM Share Posted October 27, 2024 at 07:37 PM прислал заказчик инфу, что при переходе на сайт по ссылке с Яндекс.товаров сайт отдает 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 Quote Link to comment Share on other sites More sharing options...
Tom Posted October 28, 2024 at 04:29 AM Share Posted October 28, 2024 at 04:29 AM В схожей ситуации , данное решение предложил сам хостер. Ну и как вариант от меня (так же нужно проверять). # Преобразование 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 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.