Хостинг. 301 редирект: замена одного символа

tgr_85
4 роки
0
Здравствуйте.
На сайте было много url вида:

site.com/?p=123 (цифры разные)
site.com/?page_id=2 (цифры разные)
site.com/?paged=2 (цифры разные)
site.com/?cat=123 (цифры разные)
site.com/?cat=6&paged=2 (цифры разные)
site.com/?m=20110202 (цифры разные)

После некоторых манипуляций с сайтом все url изменились таким образом: ? (знак вопроса) поменялся на _ (нижнее подчеркивание). Т.е. стало так:

site.com/_p=123 (цифры разные)
site.com/_page_id=2 (цифры разные)
site.com/_paged=2 (цифры разные)
site.com/_cat=123 (цифры разные)
site.com/_cat=6&paged=2 (цифры разные)
site.com/_m=20110202 (цифры разные)

Подскажите, пожалуйста, как настроить в этом случае постраничный 301 редирект?
karlov
4 роки
2
Попробуйте такой вариант:

RewriteCond %{REQUEST_URI} ^/$
RewriteCond %{QUERY_STRING} ^([a-zA-Z_]+=[0-9]+&?)+$
RewriteRule ^ http://site.com/_%{QUERY_STRING}? [R=301,L]

Редирект будет срабатывать только при обращении к главной странице с любым количеством GET-параметров вида «буквы_или_подчёркивания=цифры».

Для других страниц или параметров, где вместо цифр будут другие символы, редирект выполняться не будет.

Правила лучше размещать в самом начале .htaccess.
tgr_85
4 роки
0
Ваш способ работает, спасибо большое!

П.С. Судя по тому, сколько на форуме вопросов по 301 редиректу, может стоит как-то выделить этот вопрос в отдельный раздел или FAQ? Заодно и за поисковой трафик можно побороться по этой теме.
Тема закрита.