301 редирект по переменным

Обсуждение любых вопросов связанных с файлами конфигурации .htaccess

301 редирект по переменным

Сообщение Yadomaru » Ср июл 26, 2017 7:45 pm

Здравствуйте!
Есть много ссылок следующего вида: site.ru/page.php?param1=one&param2=two&param3=three
Подскажите, пожалуйста, как можно сделать 301 редирект всех таких страниц на такой вид: site.ru/param1/param3/
То есть для ссылки из примера будет site.ru/one/three/
И вообще реально ли это?
Заранее спасибо!
Yadomaru
 
Сообщений: 7
Зарегистрирован: Чт авг 04, 2016 1:32 pm
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0

Сообщение Emilien » Чт июл 27, 2017 9:59 am

Код: выделить все
RewriteCond %{THE_REQUEST} " /page\.php\?param1=([^ &]+)&param2=([^ &]+)&param3=([^ &]+)"
RewriteRule ^ /%1/%3? [R=301,L]

Или так
Код: выделить все
RewriteCond %{QUERY_STRING} ^param1=([^&]+)&param2=([^&]+)&param3=([^&]+)
RewriteRule ^page\.php$ /%1/%3? [R=301,L]

Ну и ставить выше остальных правил.
Emilien
Мл. Сержант
 
Сообщений: 84
Зарегистрирован: Чт дек 10, 2015 3:35 am
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0

Сообщение Yadomaru » Вт авг 01, 2017 4:37 pm

Спасибо большое!
А такой 301 редирект для поисковиков пройдет?
Ну то есть он же не конкретные страницы перенаправляет, а по параметрам.
Yadomaru
 
Сообщений: 7
Зарегистрирован: Чт авг 04, 2016 1:32 pm
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0

Сообщение Yadomaru » Чт авг 10, 2017 9:22 am

Подскажите, пожалуйста, а как поступить, если есть две страницы с измененным порядком (очередностью) параметров:
site.ru/page.php?param1=one&param2=two&param3=three
site.ru/page.php?param3=three&param2=two&param1=one

и с них нужно сделать 301 редирект на site.ru/one/three/

То есть было бы здорово, если бы редирект происходил по присутствию в URL определенных переменных не обращая внимание на их позицию и наличие других переменных. Например, присутствуют в URL (page.php?...) две переменные param1 и param3 - все, значит редирект.

Заранее спасибо!
Yadomaru
 
Сообщений: 7
Зарегистрирован: Чт авг 04, 2016 1:32 pm
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0

Сообщение Yadomaru » Пт авг 11, 2017 8:18 am

Это нереально выполнить? Может есть какой-то другой способ?
Yadomaru
 
Сообщений: 7
Зарегистрирован: Чт авг 04, 2016 1:32 pm
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0

Сообщение Emilien » Пт авг 11, 2017 6:31 pm

Это вполне реально просто бывает, что не часто сюда заглядываю.
Код: выделить все
RewriteCond &%{QUERY_STRING} ^(?:&param1=([^&]+)|&param3=([^&]+)|&[^&]*)+
RewriteCond /%1/%2           ^(/[^/]+/[^/]+)$
RewriteRule ^page\.php$ %1? [R=301,L]

Хотя если подумать, то можно сделать ещё компактнее.
Код: выделить все
RewriteCond &%{QUERY_STRING} ^(?:&param1=([^&]+)()|&param3=([^&]+)()|&[^&]*)++\2\4
RewriteRule ^page\.php$ /%1/%3? [R=301,L]
Emilien
Мл. Сержант
 
Сообщений: 84
Зарегистрирован: Чт дек 10, 2015 3:35 am
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0


Вернуться в Htaccess

Кто сейчас на форуме

Зарегистрированные пользователи: Bing [Bot], YandexBot

cron