Как да настроите 301 редирект

Здравейте, приятели! Днес ще ви разкажа, как да настроите 301 редирект и какво означава това, а също и за какви цели се използва това пенасочване от един адрес към друг.

Преди да преминем непосредствено към практика, е нужно да се каже, че редиректа бива два типа. Предполагам разбирате, че това е преминаване от един адрес на друг. Това е необходимо, когато при преминаване по един адрес е нужно да пренасочим човека на друг адрес.

Редиректа бива временен и постоянен. Постоянния (301) показва на търсачките, че този url адрес е постоянен, а временния (302) означава, че този url адрес е временен. Днес ще поговорим именно за постоянния редирект, тъй като именно той се счита за оптимален и правилен.

Настройка на 301 редирект

Обикновенно редирект се пише във файла .htaccess, но това не е единствения начин. По надолу в статията ще ви покажа също и вариант, как да направите редирект със помощта на php.

Преди това ще поговорим, как се прави редирект с помощта на .htaccess. Въобще с помощта на редирект може да се избавите от много проблеми. Един от тях е възможните дублирани страници на сайта, тъй като той по същество е достъпен от два адреса: www.site.bg и site.bg.

За търсачките това са два различни сайта. По този начин, всяка страница на вашите сайтове има като минимум два адреса, по които може да я намерите. Това е ако сте премахнали другото дублирано съдържание. За да се премахнат подобни проблеми, обикновенно се прави редирект от www на варианта без www, тъй като е по-кратък и оптимален. Така главния сайт ще бъде site.bg. ако ползвател набере www.site.bg, то автоматично ще бъде пренасочен на варианта без www. Това ще позволи да се избегнат дублираните страници, тъй като вече търсачките ще разбират, че домейните са свързани. Ето и самия код:

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

Естествено, тук е нужно да промените адреса във кода (www.site.com и site.com)със адреса на вашия сайт. Следва да се отбележи, че това не е единствения начин да се избегне проблема със www. Друг вариант за действие е да се укаже във файла robots.txt команда: Host: домейна без www.

До тук се надявам, че всичко ви е ясно, но какво да правите ако е нужно да направите редирект от един домейн на друг? В този случай може да използвате този код:

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

Във първия ред е нужно да попълните името на домейна, от който трябва да става пренасочването, а във втория ред попълнете адреса към който ще става пренасочването.

Пренасочване (редирект) с помощта на php

Ето кода със който става пренасочването с помощта на php:

<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.site.bg/page.htm");
exit();
?>

Този код пренасочва ползвателя от тази страница във която кода е поставен, на site.bg, където ще има запитване към страница page.html и нейното показване, ако тя е намерена.

В какви случаи да се използва 301-ви редирект?

Постоянния редирект може да се използва във случаите, когато текущия адрес е остарял, а информацията е преместена на ново място. Например, вие сте пренесли статия от една категория в друга или даже от един сайт на друг. Тук ще ви помогне редиректа, който ще обясни на търсачките, че информацията е преместена на ново място (url адрес).

Също така редирект се използва когато има няколко домейна и един основен. Обикновенно от всички допълнителни домейни се прави редирект към основния. Това се използва предимно от големи компании. Например, имате голяма компания със красиво име, но има случаи когато хората правят печатни грешки при търсене. Или пък конкурентите искат да купят домейн име, близко по написване на вашето, за да се занимават с мошеничество използвайки авторитета ви!

Разбира се, напълно не може да се защитите от такива хора, но много купуват  4-10 домейна, със близки имена на основния домейн и след това правят редиректи. Тоест при отваряне на който и да е от тези адреси, става пренасочване към главния сайт.

Възможни грешки

А сега да разберем кои са основните грешки при използване на редирект.

  1. Първата грешка – всеки редирект на повече от един адрес. Например се пренасочва към един адрес, от там към друг и т.н. Това е странно и подозрително и обикновенно се използва при различни сиви операции.
  2. Втората грешка – редирект който води към страница която не съществува (грешка 404). Или се получава друг вид грешка 4xx или 5xx. Единствено правилния отговор на сървъра е 200.
  3. Третата грешка – линк към стари адреси, от които вече е направен редирект. Да допуснем, че имате някакъв пост, нещо е станало и вие сте преместили адреса на статията, променили сте я и сте я допълнили с нови неща. За да няма грешки, вие правите 301-ви редирект от стария адрес на новия. Това е добре, но най-оптималния вариант ще бъде пълната смяна на всички линкове към този пост (към новия му адрес). Накратко, най-добре е, ако на сайта ви няма линкове към стария адрес.

За да направите пренасочване от стария към новия адрес, може да използвате този код:

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

Надявам се, статията да ви е помогнала поне малко да разберете, как се прави 301-ви редирект, какво е това и защо е нужно. Успех.

С уважение, Николай Томов.

Хареса ли ви статията? Споделете с приятелите:

Вашият коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *