Як налаштувати 301 редирект

22

Від автора: всім привіт. Сьогодні я розповім вам, як налаштувати 301 редирект і що це взагалі таке, а також для яких цілей він використовується.

Перш ніж безпосередньо перейти до практики, потрібно сказати, що редирект буває двох типів. Я думаю, ви розумієте, що це перенаправлення з однієї адреси на інший. Воно необхідно, коли при переході по одному адресою потрібно відправити людину в інше місце.

Редирект буває тимчасовим і постійним. Постійний (301-ї) передає посилальну вагу, тимчасовий (302-ї) – немає. Сьогодні ми поговоримо саме про постійному редірект, так як саме його використання вважається оптимальним.

Налаштування 301 редіректу і випадки з практики

Зазвичай редирект прописують у файлі .htaccess, але це не єдиний спосіб його створити. Далі в статті я також покажу варіант, як зробити редирект з допомогою php.

Але спочатку ми поговоримо про те, як він робиться .htaccess. Взагалі з допомогою редіректу можна позбутися багатьох проблем. Одна з них – можливі дублі сторінок на сайті, так як він, по суті, доступний за двома адресами: www.site.ru, site.ru.

І для пошукача це різні сайти. Таким чином, кожна сторінка ваших сайтів має як мінімум 2 адреси, за якими до неї можна звернутися. Це якщо ви прибрали інші дублі. Щоб запобігти подібні речі, зазвичай роблять редирект з www на варіант без www, так як він більш короткий і оптимальний. Таким чином, відбувається склеювання доменів. Головним дзеркалом буде site.ru. Якщо користувач сам набере www.site.ru, то його автоматично перенаправляє на варіант без www. Це і дозволить уникнути дублів, так як тепер пошукова машина буде розуміти, що домени пов’язані. І ось сам код:

RewriteCond %{HTTP_HOST} ^www.site\.com$ [NC]
RewriteRule ^(.*)$ http://site.com/$1 [R=301,L]

Природно, тут потрібно замінити адресу сайту на ваш. Варто відзначити, що це не єдиний спосіб уникнути проблем з www. Інший варіант – вказати у файлі robots.txt команду Host: домен без www. Ще один спосіб – налаштувати головне дзеркало в Яндекс.Вебмастере. Це взагалі самий простий варіант для Яндекса.

Відмінно, ну а що, якщо вам потрібно зробити редирект з одного домену на інший? У такому разі скористайтеся таким кодом:

RewriteCond %{HTTP_HOST} !^www\.site\.com
RewriteRule ^(.*)$ http://www.site.com/$1 [R=301,L]

Де в першому рядку вам потрібно вписати назву домену, з якого має йти перенаправлення, а у другому рядку вписати адресу, на який власне відбувається перенаправлення.

Власне, для максимально спрощення можу порадити вам такий сервіс — http://www.webconfs.com/htaccess-redirect-generator.php. Це так званий генератор редиректів.

Перенаправлення з допомогою php

Також я хочу показати, як робити це за допомогою php.

Цей код перенаправляє користувача з тієї сторінки, де він вставлений, на site.ru, де буде запит на сторінці page.html і її відображення, якщо вона виявлена.

Одного разу я проходив пару уроків з основ php і там наводився ще один приклад з тим, як використовувати редирект. Припустимо, у вас на сайті є інформація, яку ви готові показати користувачеві тільки після реєстрації або після введення ним e-mail. Загалом, неважливо, що саме за умову ви ставите.

Суть в тому, що якщо умова виконується (введені правильні дані, запроваджено коректний e-mail і т. д.), то ви перенаправляти його на закриту сторінку і людина отримує доступ до інформації. Якщо він ввів дані неправильно, то повертати його назад на сторінку введення. Загалом, ось такий простий приклад використання перенаправлень в php.

В якому випадку застосовувати 301-ї редирект?

Постійний редирект потрібно застосовувати у всіх випадках, коли поточний адресу застарів, а інформація перенеслася на нове місце. Наприклад, ви перенесли статті з одного розділу в інший, або навіть з одного сайту на інший. Тут вам і допоможе редирект, який дасть пошуковим роботам зрозуміти, що інформація переїхала на нове місце.

Також редирект застосовують в тому випадку, коли є кілька доменів і один основний. Зазвичай з усіх додаткових доменів роблять редирект на основний. Це особливо актуально для великих компаній. Наприклад, у вас велика компанія з красивим ім’ям. Але бувають випадки, коли люди роблять помилки. А може просто конкуренти хочуть забрати доменне ім’я, близьке за написанням до вашого, щоб вести шахрайські дії від вашого обличчя!

Звичайно, повністю від таких людей не вбережешся, але багато купують 3-10 доменів, близькі за назвою та доменних зон до основного адресою, після чого роблять їх дзеркалами. Тобто при переході по кожному з цих адрес відбудеться перенаправлення на головний адресу.

Можливі помилки

Тепер розберемо найбільш часті помилки при використанні перенаправлення. Перша – це будь-багатоступінчастий редирект. Це коли при переході за адресою спочатку робиться перенаправлення в одне місце, а звідти – в інший і т. д. Це в принципі дивно і підозріло, тому що зазвичай використовується для всякого роду сірих операцій. Та й вам, звичайного веб-майстру, навряд чи коли-небудь знадобиться. До того ж подібного роду фокуси сильно знижують швидкість завантаження кінцевої сторінки.

Друга помилка – так званий битий редирект, коли відбувається перенаправлення на сторінку, якої не існує (помилка 404). Або віддається будь-яка інша помилка типу 4хх або 5хх. Єдино правильну відповідь сервера – 200.

Третя помилка – посилання на старі адреси, коли з них вже зроблений редирект. Припустимо, у вас є який-небудь пост. Наприклад, на тему «як віджиматися 100 разів». Щось сталося і ви перенесли адреса статті, змінивши і допрацювавши її. Щоб не було помилок, ви робите 301-ї редирект зі старої адреси на новий. Це добре, але найбільш оптимальним варіантом буде повна зміна всіх посилань на цей пост (на його адресу). Коротше кажучи, краще всього, якщо у вас не буде на сайті посилань на стару адресу.

Щоб зробити перенаправлення зі старої адреси на новий, також можете використовувати таку конструкцію:

Options +FollowSymlinks
RewriteEngine on
rewriterule ^старий-адреса(.*)$ http://название-сайта.com/новый адреса$1 [r=301,nc]

Нарешті, остання рекомендація – посилатися на релевантні сторінки і каталоги. Це зменшить підозрілість вашого редиректа, все буде виглядати природно.

Сподіваюся, що ця стаття допомогла вам хоч трохи розібратися з тим, як робити 301-ї редирект, що це таке і для чого він взагалі потрібен.