301 редирект — настройка и отличия от временного перенаправления
Переадресация с одной страницы на другую, или с одного домена на другой — это полезная функция, которую, однако, не все используют. А если и используют, то делают неправильную переадресацию. Ведь очень важно переориентировать страницу через корректный редирект. Если настроить переадресацию без указания редиректа, то поисковые машины быстро заметят это, и ваш сайт оштрафуют, вплоть до занесения ресурса под фильтр. Потому лучше настроить переадресацию через 301 редирект. А сделать это можно при помощи файла htaccess или через php. Оба способа будут рассмотрены в данной статье.
Содержание
Для чего вообще нужная переадресация
Сама переадресация, не говоря о номере редиректа, необходима для того, чтобы сохранить какие-либо старые страницы в индексе поиска. В основном, такая мера нужна для старых сайтов, на которых уже накопилось достаточное количество статей и прочих материалов. При переезде на новый домен или переименовании страницы, она перестает корректно отображаться по старой ссылке. В итоге, когда пользователь найдет старую сохраненную копию вашего сайта в поисковой выдаче и перейдет через нее к вам на сайт, он увидит ошибку вместо статьи, и вы потеряете потенциального посетителя.
Переадресация нужна для того, чтобы сделать уже умершие страницы ресурса живыми, чтобы не терять людей, а порой для того, чтобы демонстрировать им какие-то важные сообщения.
К примеру, если у вас есть раздел с новостями компании, и вы решили на 2 дня показать пользователям новую статью, дабы раскрутить ее. Сделать это можно как раз при помощи переадресации со страницы со всеми новостями на страницу с конкретной статьей.
Если неумело распоряжаться переадресацией, то поисковые роботы могут воспринять перенаправление URL неправильно. К примеру, если вы пропишите в php переадресацию, но не укажите ее причину. Тогда поисковый робот примет ваш ресурс за фишинговый, который лишь нужен для перекачки трафика между сайтами или страницами. Такие проекты используют для штучного увеличения трафика на ресурсах и одновременной раскрутки большого количества страниц. А чтобы указать причину переадресации указывают redirect 301 в файле htaccess или любой другой. Когда поисковик увидит сообщение о редиректе, он не будет относиться к вашему ресурсу с опаской, и сайт не потеряет свои позиции в выдаче. Потому распоряжайтесь редиректом мудро!
Через какой редирект сделать переадресацию — через 301 или 302
Это одна из любимейших тем для споров между вебмастерами на форумах. Одних предпочитают делать передресацию через 301 редирект, а другие утверждают, что он неправильно работает, и выбирают 302-й. Нельзя сказать, что какой-то из образовавшихся лагерей прав, поскольку через 301 редирект выгодно делать переадресацию в одних случаях, а через 302 — в других. Разберем в каких случаях как лучше сделать.
Разумеется, 301 редирект вебмастера любят больше. Было время, когда сайты и страницы, работающие через 302 редирект, блокировали. Это был единичный случай в истории индексации ресурсов и больше подобных прецедентов не было. Но воспоминания у вебмастеров-старожилов остались, потому к 302 редиректу по-прежнему относятся с опаской. А зря, ведь он часто бывает выгодным для раскрутки сайта.
Сделать перенаправление с одной страницы на другую через 302 редирект выгодно в тех случаях, когда вы хотите временно активировать переадресацию. ведь 302 редирект так и переводится, как Temporary redirect, в то время, как 301 редирект означает Permanent Redirect, то есть постоянное перенаправление. Получается, что используя 302 редирект, вы даете поисковикам команду не удалять старые ссылки с выдачи, а сохранять их вместе с новыми, на которые указано перенаправление.
Переадресация с помощью 302 редиректа выгодна в тех случаях, когда вам нужно на время убрать одну страницу и показать вместо нее другую. К примеру, если вы хотите донести до людей какой-нибудь новый материал. Тогда вы можете поставить на него переадресацию и указать 302 редирект. За это вас не накажет ни один из поисковиков. Кроме того, так вы можете хитро обойти 404 ошибку и перенаправлять людей с части сайта, на которой ведутся технические работы. Но еще лучше использовать этот редирект для раскрутки новых постов, ведь это передача трафика, которая законно будет зафиксирована поисковыми системами.
Что касается redirect 301, то данный способ перенаправления хорошо работает только в том случае, если вы хотите активировать переадресацию навсегда. Ведь если сделать 301 редирект для страницы, которая не всегда должна быть перенаправлена, со временем она исчезнет из выдачи и ее заменят на страницу, на которую была активирована переадресация. Так стоит делать, к примеру, если вы хотите убрать попадание пользователей на главную с указанием index формата php, либо чтобы убрать зеркала с и без WWW.
301 редирект хорошо поможет тем, кто решил настроить новый домен для своего сайта. Тогда указать 301 редирект в настройках htaccess или в php будет даже полезно, ведь страницам передается «вес» прошлого домена. То есть ТИЦ и PR, благодаря которым определяется опытность и рейтинг сайтов в поисковых системах Гугл и Яндекс, будут переданы для новой страницы или того же сайта с другим URL. Так что прежде, чем сделать переадресацию, хорошо подумайте о том, какая из них будет выгоднее для страницы: 301 редирект навсегда или временный 302-й?
Как настроить 301 редирект для разных случаев в файле htaccess
Если вам необходимо сделать переадресацию всего сайта со старого домена на новый, то в htaccess нужно указать всего одну строчку: Redirect 301 / http://www.новый_домен.ру/new.html. Таким образом, поисковые роботы получат известие о перманентном переезде со старого адреса на новый, и постепенно вес старого URL будет присужден текущему адресу. Кроме того, вы можете при помощи аналогичной строки сделать перенаправление со старой страницы на новую с сохранением ее PR. Для этого вместо одного слэша «/», который означает корневой каталог сайта, пропишите в htaccess путь к странице, которую вы перенаправляете. В качестве команды вы можете не указывать 301-й редирект, а писать его полное название — RedirectPermanent — эта опция работает одинаково.
Но чаще всего 301-й редирект используют для того, чтобы склеить домен с WWW и без WWW. Ведь по умолчанию на ваш сайт можно зайти и введя домен с WWW, и без WWW. Это приводит к нежелательному дублирования страниц, что негативно влияет на индексацию и раскрутку ресурса. Потому вам нужно настроить htaccess так, чтобы сайт работал только с одним из доменов: либо с WWW, либо без WWW. Какой вариант выбирать — это уже лично ваше решение, поскольку принципиальной разницы нет. В любом случае, даже если пользователи будут вводить противоположный адрес, их запрос все равно будет перенаправлен на другой URL.
Чтобы настроить переадресацию на главный домен со вторичного зеркала, вам следует в htaccess прописать правила перенаправления. Сделать это можно активировав переадресацию при помощи строк Options +FollowSymLinks и RewriteEngine on. Далее вам нужно будет указать с какой страницы активировать перенаправление: если со страницы с WWW, то пропишите RewriteCond %{HTTP_HOST} ^www\.(.*)$, а если со страницы без WWW — то RewriteCond %{HTTP_HOST} ^([^www].*)$. В последней строке функции необходимо указать куда перенаправлять пользователей: если вы хотите сделать главным зеркалом домен без WWW, то напишите в htaccess RewriteRule ^(.*)$ http://%1/$1 [L,R=301], а если с WWW — то RewriteRule ^(.*)$ http://www.%1/$1 [L,R=301].
Учтите, что есть большая разница между настройкой htaccess для серверов с различными модулями. Многие сервера работаю с mod_rewrite. Если ваш также рабоатет с этим модом, то вам следует использовать команды, которые были описаны выше: RewriteRule, RewriteCond; а тип редиректа указывать в скобках (например, для 301 нужно прописать [R=301]). А если ваш сервер работает с активированным модом mod_alias, то используйте в htaccess другие команды, вроде RedirectMatch 301, Redirect 301, RedirectPermanent и прочие.
Как активировать «переезд навсегда» через код php
Настроить перманентное перенаправление можно не только через htaccess — это можно прописать и в коде php. Порой такой способ даже лучше предыдущего, поскольку у новичков часто возникают проблемы с использованием файла htaccess. А в результате вместо нормальной переадресации на сайте появляется сообщение об ошибке 500, которое гласит о неправильном синтаксисе в файле htaccess. И хоть php нельзя назвать более легким языком, чем внутренний язык конфигурационного файла htaccess, настроить через него перенаправление куда проще в некоторых случаях.
В языке php переадресация работает при помощи функции header () и параметра Location. Чтобы вы могли в php активировать 301-й редирект, вам нужно будет его указать как «HTTP/1.1 301 Moved Permanently», то есть как «уезжающий навсегда». Написать это необходимо в скобках после первого аргумента header. А после следующего аргумента header нужно прописать в скобках следующее: «Location: http://www.домен_куда_переезжать.ru». Предварительно рекомендуется коротко ознакомиться с языком php и тем, как он работает, чтобы случайно не наделать глупых ошибок.
Стоит учесть, что указанный способ переадресации через язык php хоть и работает аналогичным способом, как и при помощи htaccess, но не всегда является уместным. Особенно, если вы хотите настроить гибкое перенаправление, например, с главной с index.php на главную страницу без индексного файла. Тогда такая переадресация вам не поможет. Она сгодится разве что для автоматического перенаправления с конкретной страницы на другую.
Почему перенаправление 301 не работает
Очень часто случается, что вебмастера допускают ошибку в написании правил для файла htaccess. Либо упускают из виду какие-либо специфические особенности своего сервера. После этого переадресация либо вообще не работает, либо страница выдает ошибку под номер 500. Если у вас второй вариант, и выскакивает ошибка, то попробуйте поочередно закомментировать все опции файла htaccess, пока не дойдете до той строки, которая уберет ошибку 500. Чтобы закомментировать строку нужно сразу перед ней без пробелов поставить решетку «#».
Но, как показывает практика, часто перенаправление не работает по иным причинам, не только из-за ошибок в синтаксисе. С одной стороны, проблема может крыться в том, что вы использовали неверные команды, потому что на вашем сервере работает не мод mod_rewrite, а другой модуль. Тогда вам нужно будет лишь указать иные команды. С другой стороны, проблема может скрываться в неправильных настройках сайта. Проверьте, активированы ли у вас ЧПУ-ссылки. Кроме того, проследите, чтобы файл htaccess имел правильное имя. Его создают в текстовом файле и часто забывают менять формат .txt на .htaccess, ведь правильный конфигурационный файл не имеет имени, а только расширение.
Лучший способ решить проблему с перенаправлением — это обратиться в техническую поддержку хостинг-провайдера, которым вы пользуетесь. Обычно, помощи долго ждать не приходится, так как это популярная проблема среди вебмастеров. Дело в том, что переадресация может не работать из-за того, к примеру, что сервер не поддерживает знаки вопросов в указанных старых ссылок в htaccess. Вы не можете знать об этом заранее, потому напишите в поддержку за детальной информацией.