У меня очень раздражающий редирект, я не могу понять.
У меня много сотен страниц, подобных приведенной ниже:
example.com/directory/in.php?url_id=28930
Я хочу перенаправить все, например. /directory/in.php?url_id=28930
Все перенаправления пойдут на домашнюю страницу.
Какое правило перенаправления вы могли бы предложить?
Я уже пробовал много правил перенаправления, но по какой-то причине все не работают.
Чтобы проверить конкретные строки запроса, вам нужно использовать mod_rewrite и RewriteCond
директива, которая проверяет соответствие QUERY_STRING
серверная переменная. (The RewriteRule
шаблон соответствует только URL-пути, который, в частности, исключает строку запроса.)
Например, для перенаправления определенного URL /directory/in.php?url_id=28930
в корне .htaccess
файл, вы бы сделали что-то вроде следующего:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^url_id=28930$
RewriteRule ^directory/in\.php$ / [QSD,R=302,L]
В QSD
flag (Отмена строки запроса - только Apache 2.4+) удаляет строку запроса из перенаправленного URL-адреса. Если вы используете Apache 2.2, вам нужно будет добавить ?
до конца замена строка вместо этого, т.е. /?
, чтобы эффективно удалить строку запроса из перенаправленного URL. В противном случае по умолчанию строка запроса из запроса передается на целевой URL (т. Е. учреждение аргумент).
Также обратите внимание, что это временное перенаправление 302. Если это предполагается навсегда, измените 302
к 301
только если вы уверены, что он работает нормально (чтобы избежать проблем с кешированием).
Чтобы сделать это более общим и перенаправить любой URL-адрес, содержащий числовой url_id
значение параметра, затем измените RewriteCond
директива примерно так:
RewriteCond %{QUERY_STRING} ^url_id=\d+$
В стороне: С точки зрения SEO, подобные массовые перенаправления на домашнюю страницу, вероятно, будут рассматриваться Google и другими поисковыми системами как soft-404.