Консультация № 183696
22.06.2011, 17:34
55.50 руб.
0 1 1
Здравствуйте! У меня возникли сложности с таким вопросом:


Настраиваю переадресацию в .htaccess. У меня есть несколько сотен адресов вида /?name=FAQ&op=showcat&id_cat=11#112 которые я переадресовываю на /faq_old/.
Будет ли корректным ограничиться одной строкой
Код:
redirect permanent /?name=FAQ* http://www.site.net/faq_old/
, указав звездочкой на любые символы после FAQ, или нужно прописывать каждый адрес как
Код:
redirect permanent /?name=FAQ&op=showcat&id_cat=11#112 http://www.site.net/faq_old/
,
Код:
redirect permanent /?name=FAQ&op=showcat&id_cat=11#113 http://www.site.net/faq_old/
и т.д.?

Обсуждение

давно
Старший Модератор
312929
1973
23.06.2011, 03:16
общий
это ответ
Здравствуйте, Станислав Щербаков!

К сожалению, Redirect не поддерживает регулярные выражения, так что одной строкой ограничиться не получиться. RedirectMatch регулярные выражения поддерживает, но тут проблема более общая - при редиректе то, что стоит после знака вопроса, не обрабатывается (строка запроса). Поэтому стоит использовать mod_rewrite:
Код:

RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} ^name=FAQ&op=showcat&id_cat=\d+$ [NC]
RewriteRule ^.+$ http://www.site.net/faq_old/? [R=302,L]

Обратите особое внимание на знак вопроса в конце RewriteRule - без него тоже работает, но к новому адресу будет добавляться строка запроса из старого, примерно так:
http://www.site.net/faq_old/?name=FAQ&op=showcat&id_cat=11#112,
что не есть хорошо. Правда, адрес метки (начинающийся с #) всё равно останется, то есть будет что-то вроде
http://www.site.net/faq_old/#112,
но тут, боюсь, уже ничего не поделаешь.
Форма ответа