Вторник, 29 Янв 2013 в 12:14

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

Автор: admin

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

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

images

При 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

 

Ваш отзыв

Цитаты великих

"История идей есть история смены и, следовательно, борьбы идей."

В. И. Ленин

Я в Контакте