301 Редирект динамических страниц

12 3
splish
На сайте с 25.01.2011
Offline
114
3472

Выручайте, нужно сделать редирект с страницы:

site.ru/str_post1.php?id=1

На страницу:

site.ru/str_post2.php?id=1

IL
На сайте с 20.04.2007
Offline
435
#1

Как-то так должно работать.

RewriteRule ^str_post1.php str_post2.php [R=301,L,QSA]

Если только для id=1

RewriteCond %{QUERY} id=1$

RewriteRule ^str_post1.php str_post2.php [R=301,L,QSA]
... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
splish
На сайте с 25.01.2011
Offline
114
#2

Думаю так не пойдет, строка str_post1.php и str_post1.php не изменяемая (это две разных страницы), меняются только ID, а их много.

С вашими вариантами редирект будет всех страниц или я что то недопонимаю?

IL
На сайте с 20.04.2007
Offline
435
#3

> строка str_post1.php и str_post1.php не изменяемая (это две разных страницы),

Не увидел отличий..

> Думаю так не пойдет

проверьте..

> С вашими вариантами редирект будет всех страниц или я что то недопонимаю?

Первый вариант - для всех страниц str_post1.php будет перекидывать на str_post2.php

второй - только для случая, когда в строке запроса прописан id=1 (последним параметром... если, конечно, это имеет значение)

siv1987
На сайте с 02.04.2009
Offline
427
#4

splish, конкретнее пишите, что изменяется, что нет, дайте нормальные примеры урлов.

splish
На сайте с 25.01.2011
Offline
114
#5

Есть страница - site.ru/str_postart.php?id=47

Нужно сделать редирект на site.ru/str_postcat.php?id=187

str_postart.php и str_postcat.php - это две разные страницы которые не изменяются, изменяются только id.

Rulin
На сайте с 16.01.2008
Offline
143
#6
splish:
Есть страница - site.ru/str_postart.php?id=47

Нужно сделать редирект на site.ru/str_postcat.php?id=187

str_postart.php и str_postcat.php - это две разные страницы которые не изменяются, изменяются только id.

Если только для конкретных id, а не динамически для всех, тогда так:


RewriteRule ^str_postart.php\?id=47$ /str_postcat.php?id=187 [R=301,L]

Динамически так, но тогда id будут совпадать, а я так понял они у вас разные:


RewriteRule ^str_postart.php\?id=(\d+)$ /str_postcat.php?id=$1 [R=301,L]

Или нужен внутренний редирект? Чтоб урл остался site.ru/str_postart.php?id=47 но показывалось содержимое site.ru/str_postcat.php?id=187 тогда так:


RewriteRule ^str_postart.php\?id=47$ /str_postcat.php?id=187 [L]
Bitcoin Debit Card
siv1987
На сайте с 02.04.2009
Offline
427
#7

Если ид меняются (нет сопоставления), то для каждого урла нужно писать построчно отдельный редирект, по примеру который сам показали выше.

RewriteRule ^str_post1.php /str_post2.php [R=301,L]

bon_eur
На сайте с 09.06.2012
Offline
40
#8

ivan-lev, Rulin, siv1987, все же лучше не забывать в регулярных выражениях перед точкой ставить бэкслэш.

Rulin
На сайте с 16.01.2008
Offline
143
#9
bon_eur:
ivan-lev, Rulin, siv1987, все же лучше не забывать в регулярных выражениях перед точкой ставить бэкслэш.

Согласен.

Точка я регулярках являеться любым символом, поэтому при использовании всех выше перечисленных регулярок, если в url за место точки поставить любой символ, то редирект тоже сработает. Но всеже это не являеться никакой критической ошибкой и никак не влияет на оптимизацию поэтому в данном случае не критично.

p.s.

Хотя конечно лучше заэкранировать на всякий случай :)

splish
На сайте с 25.01.2011
Offline
114
#10

RewriteRule ^str_postart.php\?id=47$ /str_postcat.php?id=187 [L]

Почему то не работает.

Вот наглядный пример.

http://world-networks.ru/view_posth.php?id=47 Страница удалена, нужно перенаправить с сохранением PR на:

http://world-networks.ru/view_post.php?id=189

12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий