301 редирект (переадресація) — навіщо він потрібен і як зробити 301 редирект

Категорія: Просування і СЕО (SEO) Опубліковано: Вівторок, 17 травня 2016

301-а помилка (301 Permament Redirect), яка повертається при зверненні до певного адресою сторінки, означає, що сайт був на постійній основі перенесений на нову адресу, також зазначений в HTTP заголовку. Як користувачі, що зайшли через браузер, так і пошукові боти будуть перенаправлятися за новою адресою, при цьому, для пошуковиків всі властивості старого адреси (сторінки) будуть передані новому URL. При 301 редірект відбудеться склеювання старого і нового адрес: параметри начебто PageRank і тіц, а також вага сторінки та посилальну вагу старої адреси буде переданий новому URL.

Редірект з номером помилки 301 (moved permanently) це найкращий спосіб зберегти рейтинг сайту в пошукових системах при перенесенні його на новий домен або зміні системи управління контентом. Переадресацію можна виконати кількома способами, залежно від встановленого програмного забезпечення.

301 редирект

Навіщо взагалі потрібен 301 редирект?

Є кілька ситуацій в яких його можна застосувати:

  1. Для склеювання домену з www і без www. При цьому показники та ссилкова вага буде поєднуватися, а то іноді буває, що для домену і без www вони можуть відрізнятися.
  2. При зміні домену зі старого на новий 301 редирект дозволить знову ж таки зберегти показники і посилальне (щодо тіц не знаю, але PR точно).
  3. При перенесенні сторінки на сайті щоб пошуковики і відвідувачі потрапляли на нову сторінку замість старої непрацюючої.
  4. Якщо є піаристі домени з ссилками, які з якихось причин не використовуються, можливо, просто колись, то теоретично можна використовувати 301 редирект на інші свої сайти. Хоча це метод такий — додаткова можливість чи що, все ж основні перші три.

Як зробити 301 редирект

1. 301 редирект з однієї сторінки на іншу

Найпростіший варіант

1 Redirect 301 /test-1/ http://site.ru/test-2/

 Більш докладний

1 RewriteCond %{REQUEST_URI} ^/test/$
2  RewriteRule ^.*$ http://site.ru/new-test/? [R=301,L]

2. 301 редирект з www без www (головне дзеркало – домен без www)

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

3. 301 редирект з без www на www (головне дзеркало – домен з www)

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

4. 301 редирект зі сторінок зі слешем на без слеша (весь сайт)

1 RewriteCond %{REQUEST_URI} !\?
2 RewriteCond %{REQUEST_URI} !\&
3 RewriteCond %{REQUEST_URI} !\=
4 RewriteCond %{REQUEST_URI} !\.
5 RewriteCond %{REQUEST_URI} ![^\/]$
6 RewriteRule ^(.*)\/$ /$1 [R=301,L]

5. 301 редирект зі сторінок без слеша на слеш (часто в CMS системах встановлюється автоматично)

1 RewriteCond %{REQUEST_URI} !\?
2 RewriteCond %{REQUEST_URI} !\&
3 RewriteCond %{REQUEST_URI} !\=
4 RewriteCond %{REQUEST_URI} !\.
5 RewriteCond %{REQUEST_URI} !\/$
6 RewriteRule ^(.*[^\/])$ /$1/ [R=301,L]

 6. Один (а не два послідовних!) 301 редирект на без www і з слешем на наприкінці адреси сторінки

1 RewriteCond %{REQUEST_URI} !\?
2 RewriteCond %{REQUEST_URI} !\&
3 RewriteCond %{REQUEST_URI} !\=
4 RewriteCond %{REQUEST_URI} !\.
5 RewriteCond %{REQUEST_URI} !\/$
6 RewriteCond %{HTTP_HOST} ^www\.(.*)$
7 RewriteRule ^(.*)$ http://%1/$1/ [L,R=301]
8  
9 RewriteCond %{REQUEST_URI} !\?
10 RewriteCond %{REQUEST_URI} !\&
11 RewriteCond %{REQUEST_URI} !\=
12 RewriteCond %{REQUEST_URI} !\.
13 RewriteCond %{REQUEST_URI} ![^\/]$
14 RewriteCond %{HTTP_HOST} ^www\.(.*)$
15 RewriteRule ^(.*)$ http://%1/$1 [L,R=301]
16  
17 RewriteCond %{REQUEST_URI} !\?
18 RewriteCond %{REQUEST_URI} !\&
19 RewriteCond %{REQUEST_URI} !\=
20 RewriteCond %{REQUEST_URI} !\.
21 RewriteCond %{REQUEST_URI} !\/$
22 RewriteCond %{HTTP_HOST} ^([^www].*)$
23 RewriteRule ^(.*)$ http://%1/$1/ [L,R=301]

7. 301 редирект тільки адреси site.ru/index.php (без GET параметрів) на основне дзеркало site.ru 

1 RewriteCond %{REQUEST_URI} /index.php
2 RewriteCond %{QUERY_STRING} ^\z
3 RewriteRule ^(.*)$ http://site.ru/? [R=301,L]

8. 301 редирект всіх адрес з index.php і GET параметрами на сторінки тільки з GET параметрами (вирізати в url index.php)

 Приклад: типу site.ru/index.php?n=1 на site.ru/?n=1

1 RewriteCond %{REQUEST_URI} /index.php
2 RewriteRule ^(.*)$ http://site.ru/ [R=301,L]

9. 301 редирект url з GET параметрами (динамічний URL) на статичний

 1 варіант (проста адресса з GET параметром)

1 RewriteCond %{QUERY_STRING} ^id=229
2 RewriteRule ^.*$ /supermodel/? [R=301,L]

2 варіант (з сторінки і GET параметром)

1 RewriteCond %{REQUEST_URI} /test/
2 RewriteCond %{QUERY_STRING} ^id=229
3 RewriteRule ^.*$ /supermodel/? [R=301,L]

10. Всі сторінки одного домену на головну сторінку іншого домену

1 RewriteCond %{REQUEST_URI} (.*)
2 RewriteRule ^(.*)$ http://site.ru/ [L,R=301]

11. Кожна сторінка одного домену на такий же адресу іншого url

1 RewriteCond %{REQUEST_URI} (.*)
2 RewriteRule ^(.*)$ http://site.ru/$1 [L,R=301]

 12. Редірект з протоколу http https.

1 RewriteCond %{HTTPS} !=on
2 RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

Зворотний редирект. Виключаємо використання захищеного протоколу не відключаючи його фізично на хостингу.

13. Редірект з протоколу https для http.

1 RewriteCond %{HTTPS} =on
2 RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]