Надеюсь хоть что-то Вы для себя почерпнёте!
Итак, переадресации могут быть полезными в нескольких случаях. Если нам необходимо изменить внутреннюю ссылочную структуру сайта или изменить адресацию всего лишь одной страницы.
Установить редиректы можно абсолютно различными способами. Я расскажу о самых ходовых и доступных. Все они опробованы и работают отлично.
В каких случаях Вам могут быть полезны переадресации, о которых пойдёт речь в данной статье?
1. Слияние весов нескольких доменов в один;
2. Перенос сайта на новый домен (перенос веса с одного домена на другой);
3. "Суммирование" ссылок для сайта с "www." префиксом и без него*;
4. Изменение внутренней ссылочной структуры сайта;
* "Суммирование" здесь понятие относительное, не прямое. Т.е. если Вы пытаетесь суммировать 2 сайта с ПР2 и ПР3, то ПР5 Вы не получите, потому как PageRank шкала не линейная. Вы станете лишь чуть ближе к заведомой цели. Чудеса математики!
Что такое редирект 301 (permanent redirect)?
Данная переадресация означает, что страница была перемещена навсегда. Всё это подробным образом описано в технической спецификации протокола HTTP (пункт 10.3.2). Мы на этом останавливаться отдельно не будем, т.к. разбор технических возможностей протокола HTTP не входит в тему данной статьи.
Варианты редиректов:
1. Редирект с использованием модуля Апача Mod_Rewrite;
2. Редирект с помощью Апача;
Переадресации с помощью языков программирования:
3. PHP;
4. Perl;
5. ASP;
В качестве примеров запросы мы будем переводить на сайт http://www.site.ru/. (не знаю даже существует ли такой). При использовании Вы должны сменить этот урл на любой другой. Не обязательно это должен быть корень сайта. Это может быть страница, скрипт и т.д. и т.п.
Например:
http://www.site.ru/ - переадресация в корень какого-либо сайта
http://www.site.ru/folder/folder/ - переадресация в папку
http://www.site.ru/myscript.php - переадресация на РНР скрипт
http://www.site.ru/cgi-bin/myscript.pl - переадресация на Рerl скрипт
Теперь рассмотрим подробнее вышеобозначенные технологии переадресации.
Mod_Rewrite
Mod_Rewrite штука сама по себе очень интересная и не менее полезная. Она позволяет быстро и качественно изменить ссылочную структуру сайта от таких адресов:
http://site.ru/script.php?id=4&cat_id=30
на примерно такие:
http://site.ru/script_4_30.html
Которые выглядят гораздо красивее и читабельнее. К тому же они ещё и лучше индексируются поисковиками.
Для осуществления данного варианта переадресации прописываем/дописываем в .htaccess следующие команды:
Options +FollowSymLinks
RewriteEngine on
RewriteCond {HTTP_HOST} ^site.ru
RewriteRule ^(.*)$ http://www.site.ru/$1 [R=permanent,L]
В данном примере мы "сращиваем" ссылки доменов www.site.ru и site.ru.
Apache
Дописываем в .htaccess команду для переадресации на сайт "http://www.site.ru":
Redirect 301 / http://www.site.ru/
Таким образом, когда пользователь или поисковик обращается к данной странице, то в качестве ответа он получает код 301, сообщающий о переезде страницы и адрес новой страницы, на которую произойдёт переход пользователя/поисковика.
PHP
В РНР файл вставляем (либо адаптируем к коду) команды:
<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.site.ru/");
?>
Либо одной строчкой:
<?php
header("HTTP/1.1 301 Moved Permanently\nLocation: http://www.site.ru/");
?>
После этих строк неплохо было бы поставить выход из скрипта командой exit() для того, чтобы в случае чего не продолжилось выполнение данного скрипта. Делается это по аналогии с прошлым вариантом:
<?php
header("HTTP/1.1 301 Moved Permanently\nLocation: http://www.site.ru/");
exit();
?>
Perl / CGI
Прямо в самом начале скрипта, либо перед выводом заголовка пишем:
print "HTTP/1.1 301 Moved Permanently\nLocation: http://www.site.ru/\n\n";
Обратите внимание на то, что в конце должны стоять два символа перевода "каретки" строки: "\n\n". Это необходимо для корректного закрытия заголовка документа.
Во время этой команды заголовок должен находиться "открытым". Если он будет закрыт, то эти две команды HTTP протокола попадут не в заголовок, а в тело самого документа и естественно не сработают.
В конечном итоге Ваш скрипт может выглядеть как-то так:
#!/usr/bin/perl
print "HTTP/1.1 301 Moved Permanently\nLocation: http://www.site.ru/\n\n";
* На всякий случай отмечу, что для выполнения Perl и CGI скриптов необходимо помимо поддержки таких скриптов хостингом ещё и установка прав выполнения.
Для установки прав в UNIX и UNIX-like системах (FreeBSD, Linux, ...) есть команда: chmod.
Приведу несколько примеров её использования.
Установка определённых прав доступа (включая право выполнения):
# chmod 755 script.pl
Добавление прав доступа не зависимо от того какие в данный момент права у файла:
# chmod +x script.pl
ASP
Сам я ASP (Active Server Pages) не часто использую веб-разработках. Но на всякий случай приведу пример работы редиректа и на этом языке:
<%
Response.Status = "301 Moved Permanently"
Response.AddHeader "Location", "http://www.site.ru/"
Response.end
%>
Комментариев нет:
Отправить комментарий