#apache #.htaccess #redirect #mod-rewrite
Вопрос:
Мне нужно написать два перенаправления:
- От
https://site.ru/dveri
доhttps://anothersite.ru/dveri-iz-dereva/
- От
https://site.ru/dveri?start=14
доhttps://anothersite.ru/blog/
Я написал два правила в htaccess:
#1
RewriteCond %{THE_REQUEST} s/ dveri[?s/] [NC] RewriteRule ^ https://anothersite.ru/dveri-iz-dereva/ [L,R=301]
#2
RewriteCond %{THE_REQUEST} s/ dveri[?s/] [NC] RewriteRule ^.*$ https://anothersite.ru/blog/? [L,R=301]
Результат:
ссылка https://site.ru/dveri
правильно перенаправляется на https://anothersite.ru/dveri-iz-dereva/
ссылка https://site.ru/dveri?start=14
неправильно перенаправляется на https://anothersite.ru/dveri-iz-dereva/?start=14
Ответ №1:
Два правила, которые вы написали, одинаковы. Попробуйте это во второй раз
RewriteCond %{THE_REQUEST} /dveri?start=14$ RewriteRule ^ https://anothersite.ru/blog/? [L,R=301]
Ответ №2:
Мой опытный коллега помог мне в этом:
RewriteCond %{THE_REQUEST} s/ dveri[?s/] [NC] RewriteCond %{QUERY_STRING} ^start=14$ RewriteRule ^.*$ https://anothersite.ru/blog/? [L,R=301] RewriteCond %{THE_REQUEST} s/ dveri[?s/] [NC] RewriteRule ^ https://anothersite.ru/dveri-iz-dereva/ [L,R=301]
Ответ №3:
RewriteCond %{THE_REQUEST} s/ dveri[?s/] [NC] RewriteCond %{QUERY_STRING} ^start=14$ RewriteRule ^.*$ https://anothersite.ru/blog/? [L,R=301] RewriteCond %{THE_REQUEST} s/ dveri[?s/] [NC] RewriteRule ^ https://anothersite.ru/dveri-iz-dereva/ [L,R=301]
Если эти директивы размещены в верхней части корневого .htaccess
файла, то их можно упростить до:
RewriteCond %{QUERY_STRING} ^start=14$ RewriteRule ^dveri/?$ https://anothersite.ru/blog/ [NC,QSD,R=301,L] RewriteRule ^dveri/?$ https://anothersite.ru/dveri-iz-dereva/ [NC,R=301,L]