Фев
19

301 редирект – грамотная переадресация htaccess и php header

Author admin    Category PHP     Tags ,
301 редирект

301 редирект

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

Так же очень часто приходится использовать 301 редирект при переезде на другой домен или для склейки тех или иных страниц или же домена с www и без.

Лично я очень тесно познакомился с 301 редиректом когда работал над разработкой крупного туристического портала, на сайте насчитывалось около 30000 страниц, естественно сохранить адреса всех страниц было бы в принципе не возможно, однако после долгого сотрудничества с сео специалистом который продвигал данный сайт были выделены основные url которые нужно было сохранить причем без редиректа и список адресов, который нужно было редиректить на новые, а их оказалось не мало (порядка 1500).

Вообще тема 301 редиректа постоянно мусолится на всех seo форумах, кто то говорит что он не передает ссылочный вес, кто то говорит что передает да и куча других данных подтвердить примером которые никто не может.

Так как 301 редирект достаточно полезен, да и часто используется каждая поисковая система, на своем сайте в разделе помощи описывает как им лучше воспользоваться. Лично я считаю что триста первый редирект наилучшее решение для сохранения позиций в поисковых системах и самое главное сохранение трафика пришедшим по старым ссылкам.  Ответ сервера с кодом 301 интерпретируется поисковой говорит о том что документ перенесен и на старый адрес уже не вернется (“moved permanently”).

.htaccess редиректы

Для создания подобных редиректов на хостинге должна быть возможность использования файла .htaccess и mod_rewrite как правило это есть на всех хостингах, даже на бесплатных.

Пример простого редиректа

где:
Redirect 301 – это инструкция, говорящая что страница перемещена
/ – означает, что все с верхнего уровня сайта, включая все подкаталоги, будет переадресовано

http://www.newdomen.com/new.html – новая страница или сайт.

Для того что б переадресовать одну страницу, сохранив PR старой страницы, стоит использовать следующий код:

где:
/old/old.htm – путь и имя старой страницы

Аналогичный синтаксис для переадресации сайта:

Пример переадресации каталога:

Например, зашедших в old переадресуем на www.old.com, остальных на enter.old.com (порядок следования записей важен):

Теперь рассмотрим более сложные примеры редиректа, но в тоже время более гибкие, для этого будем использовать mod_rewrite:

Чаще всего встает задача склеить домен с www и без него:

Обозначение [R=301,L] означает: перенаправить клиента и отправить ему код статуса 301 (R=301) и сделать это правило последним (L).

Если вы решили поменять домен, то вам понадобиться код следующего редиректа:

Еще один очень полезный и часто используемый пример, если необходимо чтобы вместо data.htm загружался файл data.html, добавьте в .htaccess:

Если нужно заменить все .htm файлы на .html файлы то на помощь придет вот такой код:

PHP редирект

Очень важно что до вызова header, ничего не должно выводиться (например, echo или print), в противном случае на экран будет выведена ошибка.

А вот и более полный вариант php редиректа с сохранением передаваемой страницы и параметров вызова:

301 редирект, позволяет сохранить посетителей (трафик) и по возможности передать PR как домена так и страниц, однако не стоит забывать что процесс склейки страниц и передачи PR занимает длительное время.

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

12 комментариев к записи “301 редирект – грамотная переадресация htaccess и php header”

  • Сергей 5 октября 2015 - 15:27

    А если таких пар соответствий порядка несколько тысяч? В htaccess вроде много нельзя. А как тогда?

    • admin 10 октября 2015 - 1:39

      Можно и в htaccess, но логичней будет в базу данных и редирект делать средствами того же php

Прокомментировать