26 января 2016      410      0

Переадресация страниц сайта на php, javascript, с помощью тега refresh и модуля mod-rewrite

Как часто вам нужно переадресовать пользователя на другую страницу? Уверен, не редко. Для осуществления этой задачи используются несколько способов.

Переадресация на javascript

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

<script language="JavaScript"> 
  window.location.href = "http://www.borpost.ru"
</script>

Вместо http://www.borpost.ru укажите страницу, на которую следует переадресовать пользователя. Способ не работает, если в браузере не включен javascript. Но, как показывает практика, javascript всключён почти у всех пользователей сайта. Но при этом отключён у поисковых ботов.

Переадресация с помощью meta-тега refresh

Воспользуемся html тегами. Тег, указывающий на время обновления страницы, выглядит так:

1
<meta http-equiv="refresh" content="5" />

content=»5″ указывает на время задержки между обновлениями страницы. Счет ведётся в секундах. Теперь используем этот мета-тег для переадресации.

1
<meta http-equiv="refresh" content="5;url=http://www.borpost.ru" />

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

1
<meta http-equiv="refresh" content="0;url=http://www.borpost.ru" />

Минусом переадресации тегами и javascript является то, что в случае переезда сайта, смены домена, или перемещении файлов, статья для пользователя остаётся той же, а для поисковых систем — нет. Поэтому при переезде сайта категорически нельзя использовать эти методы, так как основной сайт выпадет из результатов поиска из-за своей пустоты, а новый сайт не попадёт в результаты из-за «плагиата». Да, да, поисковые системы оценят сайт как плагиатчик. И этот сайт украл содержание с вашего предыдущего сайта. Плагиатчики значительно опускаются в результатах поиска. Не делайте ошибок.

Переадресация средстави php

Здесь всё просто. Нужно отправить соответствующий http заголовок

1
2
3
<?php
    header('Location: http://www.borpost.ru');
?>

Преимущество этого способа состоит в том, что можно с этим заголовком параллельно отправить статусы сервера, например, 301 Moved Permanently, что укажет поисковым ботам о перемещении ваших материалов.

1
2
3
4
5
<?php
    header("HTTP/1.1 301 Moved Permanently");
    header("Location: http://www.scriptsite.ru/newdir/newpage.htm");
    exit();
?>

Печальный опыт говорит, что нельзя пренебрегать статусами сервера.
Одна из моих статей часто встречалась в выдаче у поисковиков. Но вздумалось мне перенести её на другой адрес. В результате адрес А сменился на адрес Б. При этом я никаких заголовков для посетителей адреса А не отсылал. Спустя какое-то время поисковые боты нашли и страницу Б. Проиндексирвоали её, увидели, что она совпадает со страницей А, проигнорировали её. Потом зашли на страницу А, увидели, что она исчезла, удалили её из собственной базы.
В результате моя статья выпала из выдачи поисковиков.

Поэтому не забывайте при переносе материалов указывать нужные http заголовки.

Переадресация средствами сервера apache (.htaccess)

Пожалуй, самый удобный способ переадресации. Пример редиректа на новый домен:

1
2
3
Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://www.scriptsite.ru/$1 [R=301,L]

Данная запись в файле .htaccess (файл должен лежать в корне старого сайта) перенаправит любой запрос на домен scriptsite.ru, при этом всё адреса перенаправляются на соответствующие им на новом домене. Например, olddomain.ru/documents/page.htm перенаправится на www.scriptsite.ru/documents/page.htm , что весьма удобно. Если вы не хотите перенаправлять с домена на домен, а просто хотите перенаправить с одного адреса страницы на другой, пропишите следующие строки:

1
2
3
RewriteEngine   on
RewriteBase     /
RewriteRule     ^old.htm$  /newcategory/rewrite.html [R=permanent]

Таким образом мы перенаправляем запрос с файла old.htm , лежащего в корневой директории сайта, на файл rewrite.html, лежащий в директории newcategory.

Как вы уже успели заметить (а кто не успел, у того ещё есть последний шанс), RewriteRule поддерживает регулярные выражения, что позволяет творить с переадресацией что угодно.
Например, я делал файл .htm изображением ( RewriteRule ^(.*).htm$ $1.jpg) , т.е. с адреса dog.htm браузер перекидывал меня на картинку dog.jpg. Я не хочу расписывать все возможности модуля mod_rewrite, с чьей помощью мы сейчас работали. Об этом написано немало уроков, но, если хотите, можете сами поискать дополнительную информацию об этом. (Например, на официальном сайте, правда, на английском языке.)

Преимуществом этого способа является его безболезненность. То есть перенос материалов и последующая переадресация со старого адреса на новый никак не отразятся на позиции сайта в поисковых системах. Система работает так же, как и переадресация на php, за исключением того, что она не требует установленного php. Но есть и минус: переадресация через mod-rewrite нагружает сервер немного сильнее, чем такая же переадресация через php. Да и модуль mod-rewrite не всегда бывает установлен на apache. Хотя сейчас большинство хостеров и ставят его, продолжают встречаться единичные клинические случаи, когда этот модуль не установлен.

Выбирайте способ, который вам больше подходит, и устанавливайте его на сайт!

Все темы на сайте

© 2017 BorPost · Копирование материалов сайта без разрешения запрещено