Обратите внимание, что параметр _escaped_fragment_
URL был частью спецификации сканирования Google AJAX (устарело с октября 2015 г.) с использованием URL-адресов в стиле #!
, поэтому убедитесь, что ваш сайт по-прежнему не использует это.
RewriteCond %{QUERY_STRING} ^_escaped_fragment_=(.*)$
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}%1? [L,R=301]
Это правильная идея, так как вам нужно проверить значение серверной переменной QUERY_STRING
, однако целевой URL, возможно, неверен. (Возможно, это было бы правильно, если бы вы все еще использовали эту спецификацию.)
Вместо этого попробуйте что-то вроде следующего:
RewriteCond %{QUERY_STRING} ^_escaped_fragment_=
RewriteRule (.*) /$1 [QSD,R=302,L]
Выше следует перенаправить URL-адрес вида example.com/somedir/3.html?_escaped_fragment_=<anything>
на example.com/somedir/3.html
.
Флаг QSD
(Apache 2.4+) необходим для удаления строки запроса из целевого URL.
Обратите внимание, что это 302 (временное) перенаправление. Перейдите на 301 (постоянное) перенаправление только после того, как вы подтвердите, что он работает нормально - во избежание проблем с кэшированием. 301 перенаправления постоянно кэшируются браузером (включая любые ошибочные перенаправления).
Пользователь вводит эту ссылку: example.com/somedir/3.html?_escaped_fragment_=
Пользователи обычно не будут вводить подобные ссылки. Они не должны даже быть связаны с поисковыми системами, если только в какой-то момент не было неправильной конфигурации сайта? Итак, в зависимости от того, как / откуда эти URL-адреса связаны (проверьте отчет в GSC), вы могли бы вместо этого даже рассмотреть возможность блокировки этих URL-адресов? Например:
RewriteCond %{QUERY_STRING} ^_escaped_fragment_=
RewriteRule ^ - [F]
Выше будет возвращено 403 Запрещено.