Всем привет!
Заметил во внутренней статистике сайта, а потом и подтвердил это Яндекс Метрикой, что получаю в день по 5-10 ошибок 404 от заходов с рекламы Яндекс Директа.
Проанализировал, что у этих ошибок общее и понял, что все такие адреса почему-то имеют в урле "&q="
К примеру, такой
site.ru/gazonokosilki?from=yandex.ru;search%26%23x2F;pad%26%23x2F;;web;;0;&q=бензиновая%20газонокосилка%20для%20дачи&etext=2202.RSByUXFWPmuKIX9b69zX9CPYOgG16LweXSG0G0LPJRJlwIdP5X_SOmr5XzrYhBOpoUy85golLKBOKPXV6i3TJVG5JQA1oaresyDbkSDD_XthcmpldWhxdnlkeWZlZmJx.ec8eacfc5386d742fcf6bc2b8482e87666e167b4&baobab_event_id=kp75stecyh
Как я понимаю, т.к. друпал сам использует "&q=", то возникает такой конфликт.
Я не просил Яндекс добавить "&q=" в адрес рекламируемой страницы, и пока не знаю, как это убрать оттуда (поддержка пока молчит).
Как то можно решить эту проблему на стороне сайта?
Комментарии
Прицепиться к любому другому параметру запроса, гарантированно передаваемому по любым ссылкам с Директа вместе с
q=
. Например, из вашего примера выше это потенциально может бытьbaobab_event_id=
. Главное - убедиться, чтобы параметр был универсальным (присутствовал во всех случаях переходов с Директа). Он будет идентификатором (маркером) перехода по ссылке с директа.Далее - дописать .htaccess (сразу после
RewriteEngine on
), добавив самую первую обработку правил редиректа (с очисткой запроса от q=) для случая, когда в запросе приходит этот параметр-маркер.Например, как-то так (только для примера, не гарантирую работоспособность):
RewriteEngine on
RewriteCond %{QUERY_STRING} (^|&)baobab_event_id= [NC]
RewriteCond %{QUERY_STRING} ^(.*)&?q=[^&]+&?(.*)$ [NC]
RewriteRule ^/?(.*)$ /$1?%1%2 [R=301,L]
...
Спасибо большое за ответ!
Попробовал, вижу, что нужный кусок адреса вырезается. Но, проиходит переадресация на главную страницу. Не подскажите, что изменить, чтобы на той же странице оставаться? Как то не очень у меня с этими символами.
Я заочно не смогу вам помочь.
Ситуацию нужно исследовать на стороне вашего хоста.
Хотите - пишите в личные сообщения, попробуем договориться.
По моему, смог добить. Добавил 1 строчку:
RewriteEngine on
RewriteCond %{REQUEST_URI} /+[^\.]+$
RewriteCond %{QUERY_STRING} (^|&)from= [NC]
RewriteCond %{QUERY_STRING} ^(.*)&?q=[^&]+&?(.*)$ [NC]
RewriteRule ^/?(.*)$ /$1?%1%2 [R=301,L]
Вроде всё работает. Спасибо огромное OldWarrior за 99% работы.