Pages Navigation Menu

Seo, заработок в интернете, wordpress, блогосфера и личные мысли

Как сделать 301 редирект

Для управления веб-сервером и активации различных дополнительных возможностей для каждой из директорий на сервере используются файлы .htaccess. В данных файлах можно определять множество опций, которые корректно считываются большинством веб-серверов. Все операции, которые описываются в .htaccess, обрабатываются именно на уровне сервера, поэтому неважно, какой клиент используется для доступа к вашему ресурсу – все будет работать именно так, как вы задумали. Конечно, вебмастеру редко приходится редактировать эти файлы – как правило, эта работа возлагается на администратора сервера. Кроме того, существуют и другие способы управления, но о них ниже.301-redirect, редирект 301, как сделать 301 редирект

Одной из замечательных возможностей, которые реализуются при помощи файлов .htaccess, является возможность безусловного перенаправления, более известного как редирект 301. Для чего может понадобиться такая возможность? Причин может быть несколько:

  • Перенос ресурса на новый сервер и новый домен. Чтобы пользователи могли по старому адресу находить старый сайт, необходимо отредактировать .htaccess таким образом, чтобы он перенаправлял запросы на новый адрес. Это делается всего одной строчкой.
  • Сохранение рейтингов и позиций при переносе. Если вам не столь важно, попадут ли пользователи на новый сайт и куда важнее, чтобы поисковые системы знали новый сайт по старому адресу, эта возможность позволит вам сохранить позиции в рейтингах, а со временем поисковики «забудут» старые адреса.
  • Перемещение отдельных страниц и разделов сайта на новые адреса.
  • Установка «человекопонятных» ссылок и адресов.

 

В общем-то, можно придумать еще множество примеров использования 301 redirect, но, я думаю, суть и так ясна. Давайте рассмотрим, как сделать 301 редирект самым простым способом – через .htaccess или файл конфигурации веб-сервера. Для организации перенаправления достаточно добавить в файл следующую строку:

Redirect 301 / http://www.new.site.ru/

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

RedirectPermanent / http://www.new.site.ru/

Имеет тот же эффект, что и предыдущая. Для отдельных страниц и каталогов:

RedirectPermanent /forum http://www.new.site.ru/forum

RedirectPermanent/ask/main.html http://www.new.site.ru/ask/main.html

Дальнейшим развитием возможностей редиректа 301 является работа с mod_rewrite. Так, для слияния адресов с www и без него можно использовать следующий синтаксис:

Options +FollowSymLinks

RewriteEngine on

RewriteCond %{HTTP_HOST} ^mysite\.com

RewriteRule ^(.*)$ http://www.mysite.com/$1 [R=permanent,L] .

В последней строке так же допустимо использовать запись вида [R=301,L], которая будет иметь тот же эффект.

Для непосредственного перенаправления с одного домена на другой при помощи mod_rewrite следует использовать такую конструкцию:

Options +FollowSymLinks

RewriteEngine on

RewriteRule (.*) http://www.newsite.com/$1 [R=301,L]

Что же делать, если редактирование файлов конфигурации сервера и .htaccess недоступно, а mod_rewrite отключен на сервере? На помощь придет использование различных конструкций, позволяющих решить эту проблему на стороне сервера с использованием скриптовых языков и html, либо решить проблему на стороне клиента.

Задача перенаправления в языке php решается при помощи отправки заголовков, с помощью которых браузер самостоятельно перейдет на новый адрес. Единственное условие — перед отправкой заголовков на 301 редирект не должно быть никакого вывода — функций echo и print. В общем виде скрипт может выглядеть так:

<?

$param=$_SERVER[‘QUERY_STRING’];

if ($param!=») $param=’?’.$param;

header(‘HTTP/1.1 301 Moved Permanently’);

header(‘Location: http://newsite.com/’.$param);

exit();

?>

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

Response.Status=»301 Moved Permanently»

Response.AddHeader «Location», «http://www.newsite.com»

Если присмотреться, то можно заметить, что эти действия идентичны для обоих языков — и это не случайно, ведь в данном случае от имени пользователя отправляются одинаковые заголовки. Если на вашем веб-сервере не поддерживается ни один из скриптовых языков, а редактирование .htaccess и файла конфигурации веб-сервера запрещено, можно создать страницу-заглушку для переадресации, но, конечно, этот способ имеет существенные ограничения — после перемещения сайта для сохранения всех позиций придется создавать подобные заглушки для каждой проиндексированной страницы. Так будет выглядеть код переадресации при помощи html для главной страницы сайта:

<meta http-equiv='refresh' content='0; url=http://newsite.com'>

При этом можно установить время задержки перехода (в данном случае — значение 0). Современные браузеры отслеживают подобные конструкции и при высоких настройках безопасности переход может и не произойти.

Альтернативой использованию html может послужить организация редиректа 301 с использвоанием скриптового языка JavaScript. Существует целых четыре варианта смены адреса и перехода по нему, которые работают одинаково эффективно (если JS, конечно, включен):

·         location="http://www.newsite.com";
·         document.location.href="http://www.newsite.com";
·         window.location.reload("http://www.newsite.com");
·         document.location.replace("http://www.newsite.com");

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

Как видите, у вас достаточно много способов организации 301 redirect, при этом каждый из них достаточно эффективен. Следует отметить, что .htaccess гарантированно работает на Linux-серверах с веб-сервером Apache, работа на других серверах возможна, но не гарантируется. Это — самый затратный по ресурсам способ, поэтому по возможности следует использовать языки программирования или файл конфигурации сервера.

Теперь вы знаете, что такое перенаправление, и, я надеюсь, в данной статье вы найдете подходящий для вас ответ на вопрос «как сделать 301 редирект».

2 комментария

  1. Статья на 99% содраная с devaka.ru даже порядок то же)) и не всё раскрыли))) если копипастете так хотя бы целеком))))

  2. Не копипащу

Трекбеки/Пинги

  1. Что такое редирект и зачем он нужен | ArtShok. Красивое сайтостроение и немного SEO - [...] Как сделать редирект мы сейчас рассматривать не будет, т.к. вскользь затрагивали этот вопрос в уроке по настройке .htacces-файла. Могу…

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

Ваш e-mail не будет опубликован.