Петербург: 8 (812) 648-55-08
Новгород:   8 (8162) 552-432
info@kuratov.ru

Студия Kuratov.Ru создание и продвижение сайтов

301 редирект через .htaccess на новые страницы, некоторые ньюансы

Совсем недавно, в связи с оснащением сайта клиента системой управления, мне потребовалось сделать редирект со старых страниц сайта на новые. Все можно было оставить как есть, но необходимо мне это было потому, что данные страницы сайта имели PR и ссылочную массу, поэтому терять этого не хотелось.

Для начала, я расскажу о типичных способах редиректа через htaccess. Информация не претендует на уникальность, взята она была отсюда.

При 301 редиректе получается склейка старого и нового адреса сайта. Параметры ТИЦ и ПР также будут переданы новому адресу URL.

301 редирект www на без-www

Применяется когда нужно перенаправить с URL вида http://www.site.ru на http://site.ru.
Необходимо вносить изменения в файл .htaccess в корневой директории сайта.

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.site\.ru$ [NC]
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]

Редирект всех файлов в папке на один файл

Если вам больше не нужен определенный раздел сайта (например new1) и нужно перенаправить все запросы к папке (/new1) на один файл /new.php

Для этого в .htaccess добавляем следующий код

RewriteRule ^new1(.*)$ /new.php [L,R=301]

В случае если требуется перенаправить все файлы кроме одного, например:
все файлы из папки /new1 должны редиректится на файл /new.php, кроме файла /new1/photos.html, который должен перенаправляться на /new_photos.html, пишем следующий код:

RewriteRule ^new1/photos.html /new_photos.html [L,R=301]
RewriteRule ^new1(.*)$ /new.php [L,R=301]

Редирект динамического URL на новый файл

Если есть необходимость сделать редирект динамического URL на новый статический файл

RewriteRule ^article.jsp?id=(.*)$ /news.htm [L,R=301]

То есть теперь, запрос к файлу вида http://www.site.ru/article.jsp?id=3232 и/или http://www.site.ru/article.jsp?id=8745 будет отправлен на файл http://www.site.ru/news.htm

Редирект с помощью директивы Redirect или RedirectPermanent модуля mod_alias

Для использования необходимо включить модули mod_alias (для поддержки директив Redirect, RedirectPermanent и RedirectMatch) и/или mod_rewrite (для использования реврайта) в php.ini

Несмотря на такое страшное название, все просто.

Redirect 301 /old-page.html http://site.ru/new-page.html
или
Redirect permanent /old-page.html http://site.ru/new-page.html

Однако, у этого способа есть недостаток – все адреса, которые необходимо перенаправить, нужно перечислять один за одним, каждый отдельно.

В моем случае, как раз, было всего 4 файла, которые мне необходимо было перенаправлять. Причем были они вида:

razdel/ (как бы индексная страница)
razdel/old-page1.html
razdel/old-page2.html
razdel/old-page3.html

Теперь внимание, фишка, которую обнаружил экспериментальным путем. Страницу, которая является корнем, ставим в самый конец. Это пощволит перенаправлять посетителей на требуемые страницы. То есть

Redirect 301 razdel/old-page1.html http://site.ru/new-page1.html
Redirect 301 razdel/old-page2.html http://site.ru/new-page2.html
Redirect 301 razdel/old-page3.html http://site.ru/new-page3.html
Redirect 301 razdel/ http://site.ru/some-page.html

Будут вопросы, пишите.

Добавить к себе на страницу:

Репост в ЖЖ
25.04.2010, 16:29 Статьи 4 комментария

Оставить комментарий

  1. aaron 12.06.2011, 17:42 #

    походу, это поле для благодарностей, а не для вопросов. но всеже спрошу
    хотелось бы подробней по этому вопросу:
    Для использования необходимо включить модули mod_alias (для поддержки директив Redirect, RedirectPermanent и RedirectMatch) и/или mod_rewrite (для использования реврайта) в php.ini
    где эти модули включаются и как?

  2. Виктория 26.05.2011, 07:39 #

    Здравствуйте, требуется сделать редирект 301 с помощью .htaccess…
    Не могу во всем этом разобраться. Я хочу на сайте изменить структуру. Весь контент переноситься с com_content на com_k2. Так как я не могу разобраться как перенести категории, то мне проще перенести каждый материал в отдельности. Если Вам не сложно, напишите, пожалуйста, образец, чтобы в нем говорилось, что страница такая-то переехала на страницу такую-то, таких страниц у меня 217.
    Для того чтобы было понятно допустим страница старая http://www.doblest-chest.ru/index.php?option=com_content/... а новая http://www.doblest-chest.ru/index.php?option=com_k2...

  3. Вадик 15.11.2010, 03:55 #

    Строчка RewriteRule ^article.jsp?id=(.*)$ /news.htm [L,R=301] не работает... Ноль внимания от такой строки, как загружалась прежняя страница - так она и загружается, пробовал уже всячески параметры менять...

  4. rockmania 21.06.2010, 16:18 #

    Привет!
    Вот ставлю Redirect 301 /foto/projects/ http://www.avtorsad.ru/projects/
    В браузере все корректно работает, НО в поле Location выводит не http://www.avtorsad.ru/projects/ , а http://www.avtorsad.ru/projects/?secRef=projects
    Вот как сделать чтобы он без ?secRef=projects выводил?

Оставить комментарий


Заказать создание сайта

Я хочу

Еще мне понадобится

  • Дальнейшее продвижение
  • Написание материалов для сайта
  • Фирменный стиль: логотип    визитка    бланки

Сообщение (если есть что добавить)


Заказать продвижение сайта

Я хочу повысить отдачу от своего сайта

А также хочу, чтобы на сайт приходили по следующим поисковым запросам:

Оформите мне ответ в виде коммерческого предложения