Php redirect and seo

301 редирект — используем правильно для внутренней оптимизации

301 редирект (301 Permanent Redirect) — ответ сервера, а также серверное перенаправление с одного url-адреса на другой. Благодаря такому перенаправлению можно автоматически отправлять пользователя или поисковую систему со старого адреса страницы на новый. Этот ответ сервера указывает поисковым системам, что страница была перемещена на другой адрес, поэтому старый url можно считать устаревшим. После того, как пройдет переиндексация, поисковые системы «склеят» их и будут предлагать пользователям новый.

Где настраивается 301 редирект

Существует несколько наиболее часто используемых способов настройки 301 редиректов:

— через php условие

Когда браузер получает команду вместо одной страницы открыть вторую. Если Ваш сайт сделан на какой-то CMS, то есть вероятность того, что у неё есть функция редиректа с корня на файл index. В этом случае откройте index.php, который находится в корне Вашего движка и пропишите:

где первая строка указывает какой url-адрес должен перенаправлять, а вторая — на какой url-адрес должно выполняться перенаправление.

— в конфигурационном файле, например в .htaccess

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

В каких случаях нужно использовать 301 редирект

301 редирект с www на без www (настройка главного зеркала)

Самый распространенный случай, когда необходимо настроить редирект, это когда сайт доступен по нескольким адресам одновременно. Например: http://site.com и http://www.site.com. Это может мешать при продвижении сайта, так как в индексе поисковых систем могут появляться полные дубли страниц. Поэтому в файл .htaccess можно попробовать добавить такие строки:

301 редирект с без www на www

301 со старого адреса страницы сайта на новый

Когда вам нужно удалить страницу, но на нее ведет много качественных ссылок, чтобы сохранить эти ссылки и передать ее Page Rank другой странице, можно настроить редирект с этой страницы на максимально релевантную по смыслу другую. В таком случае вам могут помочь дополнительные строки кода в файле .htaccess такого вида:

Читайте также:  Php echo link page

где test и new-test – ваш варианты страниц

301 редирект со всех страниц одного домена на главную другого домена

Когда вам нужно переехать на абсолютно другой адрес сайта или вы купили хороший старенький домен и хотите его средиркетить, вам могут помочь вот эти дополнительные строчки кода в файле .htaccess того сайта, с которого будет работать перенаправление:

где site.ru – сайт, на который будет идти редирект

301 редирект с каждой страницы одного домена на такой же адрес другого

где site.ru – сайт, на который будет идти редирект

Редирект с http на https

Если вы решились переехать на защищенный протокол https, необходимо настроить редирект с помощью этих строк:

или можно попробовать такой вариант

301 редирект со страниц со слешем на без слеша (для всего сайта)

301 редирект со страниц без слеша на слеш (для всего сайта)

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

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

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

301 редирект для index.php, index.html или index.htm (например в Joomla), массовая склейка

Редирект с внутренней страницы на главную

Редирект с главной на внутреннюю страницу

Редирект всех внутренних страниц на главную

Редирект с домена РФ на домен RU

301 редирект каталога

Эти решения чаще всего подходят для основных задач, но иногда их необходимо дорабатывать совместно с разработчиками. Связано это с особенностями отдельных cms-систем.

Важная рекомендация: на многих хостингах по умолчанию может работать 302 или другой 3ХХ редирект. Поэтому рекомендуется всегда дописывать в свои правила [R=301,L].

Смена cms-системы и массовое изменение всех адресов страниц сайта

Бывают случаи, когда вы переезжаете на другую cms и адреса ваших страниц меняются следующим образом:

В таком случае вам необходима массовая настройка редиректов по общему принципу и возможно вам помогут следующие строки в .htaccess:

Следует понимать, что в каждом конкретном случае и разными сайтами эти правила могут быть не до конца актуальными, поэтому перед тем как изменять содержимое файла .htaccess, предварительно рекомендуется сделать его копию на всякий случай.

Читайте также:  Php function can be overloaded

Если они вам все таки не подошли, следует обратиться к разработчиками, которые знают особенности вашего движка и смогут доработать предлагаемые выше варианты.

Почему 301 редирект, а не 302 и другой 30х — опыт из нашей практики

С точки зрения SEO, следует всегда использовать 301 редирект , в случае, если вы хотите перенаправлять и пользователей и поисковых роботов на новый адрес.

301 redirect

302 редирект — временное перенаправление только пользователей на другой адрес. Поисковые системы в таком случае не понимают что страница переехала, поэтому в поисковой выдаче может быть как старая, так и новая. То есть, этот ответ сервера не указывает поисковым системам, что страница была перемещена на другой адрес. Он говорит, что старая страница временно находится на реконструкции и ее следуют сохранить в индексе.

Эту разницу чаще всего разработчики не понимают, поэтому после редизайна сайта или переезда на новый адрес следует всегда проверять ответ сервера и рекомендуется оформлять его как 301.

Вот случай когда сайт переехал с домена kiev.ua на ua, а чуть позже еще и на защищенный протокол https, но разработчики настроили не 301, а 302 редирект. Результат:

Дубль сайта: пример первый

Дубль сайта: пример два

Дубль сайта: пример три

302

Пока работал такой редирект и поисковые системы считали его временным, в индексе Google и Яндекс находилось 3 копии одного и того же сайта. Что впоследствии привело к очень сильному проседанию позиций в поиске.

Как только 302 редирект был изменен на 301, поисковые системы произвели склейку, исключили дубли из индекса и позиции очень быстро вернулись на прежние места в поиске.

Важно знать и помнить — если вы хотите, чтобы поисковые системы считали два разных адреса как один — должна работать переадресация на основной, с помощью 301 редиректа. В противном случае в индексе остается страница со старым адресом и появляется страница с новым, как в приведенном выше примере. Использование 302 или любых 30х редиректов, как правило, с точки зрения SEO не приводит ни к чему хорошему. Проверить ответ сервера можно на этом сайте — bertal.ru.

Источник

301 редирект на php – как сделать

Наша статья о 301 редиректе с помощью .htaccess взорвала интернет и собрала уже более полумиллиона просмотров. htaccess – один из самых удобных, но единственных способов перенаправить страницу. Если у вас сайт на php, то вы можете воспользоваться данной инструкцией. Если у вас самописный сайт, который состоит из набора .php страниц, то для переадресации со старого URL на новый, вам нужно добавить в самый верх файл кусок кода с редиректом на нужную страницу.

Читайте также:  Stack overflow error java

Редирект страницы

header("HTTP/1.1 301 Moved Permanently"); header("Location: https://domain.ru/test.html"); exit();

Если редиректов на php нужно поставить много, то есть смысл составить отдельный файл, который будет содержать в себе все правила, например redirect.php.

if($_SERVER['REQUEST_URI'] == '/old-url-1/') < header("HTTP/1.1 301 Moved Permanently"); header("Location: https://domain.ru/new-url-1/"); exit(); >if($_SERVER['REQUEST_URI'] == '/old-url-2/') < header("HTTP/1.1 301 Moved Permanently"); header("Location: https://domain.ru/new-url-2/"); exit(); >

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

Редирект каждой страницы на такую же страницу другого домена

$ref=$_SERVER["QUERY_STRING"]; if ($ref!="") $ref="?".$ref; header("HTTP/1.1 301 Moved Permanently"); header("Location: https://domen.ru/".$ref); exit();

Проверка редиректа

Проверить переадресацию как для браузера, так и для робота:

  • Простой, удобный и функциональный – https://www.bertal.ru/
  • В Яндекс.Вебмастере: https://webmaster.yandex.ru/tools/server-response/

Полезные материалы:

Источник

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

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

На страницах сайтов постоянно что-то добавляется, удаляется и обновляется, чтобы в поисковиках была только актуальная информация и нужные страницы не выпадали из поиска применяются редиректы. Также редиректы используются после отправки форм чтобы не было возможности отправить форму несколько раз.

  • 301 – текущая страница удалена на всегда, заменой старой считать новый URL.
  • 302 – текущая страница временно не доступна, заменой считать пока новый URL.
  • 303 – используется после отправки формы методом POST (подробнее Post/Redirect/Get — PRG).

Итак, сделать 301-й редирект можно так:

header('Location: https://example.com', true, 301); exit();

Но функция header() не сработает если до ее вызова в браузер уже выводился какой-то контент и вызовет ошибку:

Warning: Cannot modify header information — headers already sent by…

Исправить ее можно использовав буферизацию вывода добавив в самое начало скрипта ob_start() ;

Также можно подстраховаться добавив JS-редирект и ссылку если функция header() не сработает.

Упростить использование кода можно выделив его в отдельную функцию:

function redirect($url, $code = 301) < header('Location: ' . $url, true, $code); echo ""; echo 'Перенаправление… Перейдите по ссылке.'; exit(); > /* В index.php */ if ($_SERVER['REQUEST_URI'] == '/url-old') < redirect('https://example.com/url-new'); >
$urls = array( array('/url-old-1', 'https://example.com/url-new-1'), array('/url-old-2', 'https://example.com/url-new-2'), array('/url-old-3', 'https://example.com/url-new-3'), ); foreach ($urls as $row) < if ($_SERVER['REQUEST_URI'] == $row[0]) < redirect($row[1]); >>

Источник

Оцените статью