Назад | Перейти на главную страницу

Перенаправление со строками запроса

У меня очень раздражающий редирект, я не могу понять.

У меня много сотен страниц, подобных приведенной ниже:

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.