[РЕШЕНО] редирект страниц. простенький вопрос. с сайт/1/ на сайт/1/2/

Главные вкладки

Аватар пользователя startexe startexe 15 февраля 2013 в 10:49

товарищи! простенький вопрос:
после изменения структуры сайта ранее проиндексированные страницы имеют статус 404.
как в .htaccess сделать редирект страниц по шаблону:
с site.ru/catalog/xxx
на site.ru/catalog/avto/xxx
(где ххх = разные страницы сайта)

*примечание
в процессе поисков обнаружил лишь обратный пример:
с yourdomain.com/category/blue
на yourdomain.com/blue
используется такое правило:
RewriteRule ^category/(.+)$ http://www.site.com/$1 [R=301,L]

Комментарии

Аватар пользователя startexe startexe 15 февраля 2013 в 11:09

спасибо за комментарий.
я тоже хотел именно так сделать, но подумал при таком правиле возникнет циклический редирект.
после вашего совета всё-таки прописал это правило и действительно результат такой:
http://www.site.com/catalog/avto/avto/avto/avto/avto/avto.../xxx

какие еще предложения есть?

Аватар пользователя startexe startexe 15 февраля 2013 в 13:27

добавлю немного пояснительной информации.

страницы вида:
site.ru/catalog/5902/
site.ru/catalog/5902/?elements=1

нужно перенаправить на:
site.ru/catalog/avto/5902/
site.ru/catalog/avto/5902/?elements=1

после некоторых экспериментов выяснилось, что если использовать такое правило:
RewriteRule ^catalog/[0-9]+/(.*)$ http://site.ru/catalog/avto$1 [R=301,L]

то указанные выше страницы перенаправляются на:
site.ru/catalog/avto/
site.ru/catalog/avto/?elements=1

вопрос - как добавить циферки 5902 к новому адресу?

Аватар пользователя startexe startexe 15 февраля 2013 в 14:10

прописал правило, предложенное вами, но результат не изменился.

страница site.ru/catalog/5902/
перенаправляется site.ru/catalog/avto/
а нужно на site.ru/catalog/avto/5902/

в чем ошибка?

Аватар пользователя greenmother@drupal.org greenmother@dru... 15 февраля 2013 в 14:18

слеша после авто не хватает:
RewriteRule ^catalog/([0-9]+)$ /catalog/auto/$1 [R=301,L]
проверил, это у меня сработало. ставить надо до правила
RewriteRule ^ index.php [L]

Аватар пользователя startexe startexe 15 февраля 2013 в 14:51

хммм.. всё-равно не получается, хотя поставил это правило выше всех.
вроде всё правильно же.

<ифмолуль mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On

#редирект старых страниц
RewriteRule ^catalog/([0-9]+)$ http://site.ru/catalog/avto/$1 [R=301,L]

#склейка
RewriteCond %{HTTP_HOST} ^www.site.ru$ [NC]
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]

#слеш в конце строки
RewriteCond %{REQUEST_URI} ^(.*/[^/\.]+)$
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [R=301,L]

#убираем индекс из адреса
RewriteCond %{REQUEST_URI} ^/index\.(.+)$
RewriteRule ^.*$ http://%{HTTP_HOST}/ [R=301,L]

тут закрывающий тег ифмолуль

Аватар пользователя startexe startexe 15 февраля 2013 в 15:02

о! заработало!
использовал вот это ваше правило
RewriteRule ^catalog/([0-9]+)/(.*)$ /catalog/avto/$1/$2 [R=301,L]

спасибо большое, товарищу greenmother! )
надеюсь, данная информация и кому-нибудь еще пригодится

на всякий случай напишу для поисковиков, может кто наткнется через гугл на эти посты
перенаправление, редирект
с site.ru/xxx на site.ru/xxx/yyy
с сайт/1 на сайт/1/2