← Назад
Никита

Всем привет, меня зовут Никита. Я Back-end программист компании New Point. Сегодня я Вам расскажу всё, что знаю о редиректах. Приятного прочтения :)

Настройка 301 редиректа в файле .htaccess

Команда NewPoint продолжает просвещать своих дорогих клиентов и подписчиков, и сегодня мы хотели бы поднять важную и сложную тему редиректа. Мы могли бы дать Вам готовый код, но толка от этого было бы мало. Лучше мы разложим все по полочкам, раскроем все нюансы, чтобы Вы потом смогли ориентироваться в техническом смысле предложенного кода и выбирать подходящий вариант, исходя из условий. 

Итак, если Вам надоело оставаться в неведении, приготовьтесь узнавать много нового. 

Что такое 301 Permanent Redirect и код состояния HTTP 301?

Редирект — это перенаправление с одной страницы на другую. Переходя по ссылке на страницу с редиректом, пользователь может даже не узнать, что его отправили на другую площадку. Делается это для того, чтобы актуализировать ссылку: подменить ресурс более актуальным. Например, заменить http-страницу на ее https-версию. 

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

Permanent Redirect 301 или код состояния 301 — одна из популярных разновидностей редиректа. Она позволяет настроить сервер так, чтобы в ответ на запрос браузера он выдавал сообщение о том, что сайт «переехал», причём на постоянной основе. Браузер понимает, что страница больше не доступна по текущему адресу и совершает переход по новому. При этом старый URL становится недействительным, а его вес перемещается на новый адрес. 

Разница между 301 и 302 редиректом

Класс редиректов 3хх достаточно широкий, но наиболее известны из них 301 и 302. Их очень легко спутать, однако для поисковых роботов эти коды имеют принципиальную разницу. 

301 Moved Permanently — постоянный редирект. Эта комбинация сигнализирует роботу о том, что старый ресурс окончательно перемещен на новую площадку, а значит старый домен можно удалить из базы. Используется данный редирект для «переезда» на новый домен, для подключения новой CMS и для склейки идентичных страниц.

302 Temporary Redirect — временный редирект. Он говорит о временном перемещении сайта или отдельных его страниц. Как правило, используется, когда на основной площадке проводятся технические работы. 

Последствия для поисковой выдачи также неоднозначные:

  • При 301 редиректе в поисковой выдаче отображается новый URL, старый игнорируется.
    Однако на эту смену требуется время, Google рекомендует сохранять статус страницы в течение года, чтобы не «сбить» выдачу.
  • При 302 редиректе поисковая система хранит старый URL в течение полугода, в это время выдавая новую ссылку. По прошествии полугода редирект получает статус постоянного. 

Поисковые системы с подозрением относятся к 302 коду, так как нередко вебмастера упускают сроки, а затем пытаются вернуть настройки. Да и злоупотребление данным редиректом при черном SEO добавило негативного отношения. Поэтому, если Вам дорога репутация ресурса и его положение в выдаче, лучше не рисковать и пользоваться 301 редиректом в .htaccess.

Правила настройки Redirect, RewriteRule и RewriteCond

Существует несколько директив, с помощью которых совершается перенаправление пользователя. 

Директива Redirect в htaccess

Синтаксис:  

Redirect [status] /oldpage http://newpage

Стандартное перенаправление, которое используется чаще всего. В скобках вместо status необходимо указать код редиректа: 301 или 302. Страница «oldpage» должна быть прописана
в формате без указания полного адреса сайта, но с указанием полного относительного адреса URL начиная со слэша «/», то есть нужно указать именно корень сайта. 

Адрес «newpage» прописывается полностью, то есть с названием домена и протокола http
или https. 

Пример:

Redirect 301 /oldpage.php https://htaccess.ru/newpage.php

Пример:

Redirect 301 /oldpage.php https://htaccess.ru/newpage.php

Директива RewriteRule

Синтаксис:

RewriteRule Шаблон Подстановка [коды]

Директива RewriteRule диктует правила перехода на новую платформу. Если проводится внешний редирект, URL меняется в строке браузера — «[R=301,L]». При внутреннем редиректе URL не меняется — «[R=301]» или «[L]».

Директива RewriteCond

Синтаксис:

RewriteCond Сравниваемая_Строка Условие

Директива RewriteCond задает условия, при которых будут выполняться правила RewriteRule. Такими условиями могут стать браузер, IP-адрес, заголовок и т.д. 

Для чего используется перенаправление?

Редирект активно используется вебмастерами, так как полезен в различных обстоятельствах:

  • При переезде сайта на новый домен. Чтобы не потерять трафик, направляющийся на старую страницу, создается перенаправление.
  • Установка SSL-сертификата. Позволяет перенаправить пользователь со страниц с http на адрес с префиксом.
  • Смена URL страницы. Это событие может быть связано со сменой CMS или с SEO-оптимизацией.
  • Перенос разделов на субдомены. 
  • Для концентрации трафика с разных доменных зон в одной. Вебмастер покупает домены example.com, example.ru, example.net, example.org и example.biz и на четырех последних сайтах настраивает редирект на example.com.
  • Для показа мобильным пользователям специальной версии. 

Способы настроить редирект 301

В зависимости от площадок, с которой перенаправляется, и на которую направляется поток трафика, используется различный синтаксис редиректа. 

С одной страницы на другую

Данный редирект раз и навсегда изменит URL страницы и позволит избавиться от дублей
и устаревших материалов. 

Синтаксис:

Redirect 301 /oldpage/ http://site.ru/newpage/

Более подробный синтаксис того же редиректа:

RewriteCond %{REQUEST_URI} ^/oldpage/$ 
RewriteRule ^.*$ 
http://site.ru/newpage/? [R=30

После сохранения такого кода будет осуществляться постоянная переадресация со старой страницы на новую, раздел старой страницы будет удален из поиска, а новой странице передастся весь ее вес.

Склейка зеркал сайта (www / без www)

Подобная работа проводится в том случае, когда под один сайт приобретается сразу несколько доменов, различающихся лишь наличием или отсутствием тройного W.

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

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

Обратный редирект, при котором главным зеркалом считается домен с www, можно реализовать через код:

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

Таким образом обе страницы связываются, и трафик не разделяется.  

С http на https

Чтобы в поиск не попадали дубли, а пользователи не заходили на страницы с разными протоколами, прописывается данный редирект. Его итогом будет добавление ко всем URL протокола https. Провести подобную работу можно на разных уровнях.

Для всего сайта

Чтобы полностью перенаправить сайт, необходимо в файле .htaccess добавить следующие строки:

RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

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

RewriteCond %{HTTPS} =on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]

Если же и после этого изменения остается циклическое перенаправление, введите:

RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Редирект — дело сложное, поэтому и третий код не панацея. Если он не сработал, введите: 

RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{REQUEST_URI} =/page.php
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]

Это должно помочь и все пользователи и поисковые системы будут перенаправляться на домен
с протоколом https, но SEO-данные при этом останутся неизменными. 

Постранично

Если Вам необходимо перенести весь сайт, кроме одной страницы, используйте постраничный редирект. Он прописывается следующим образом:

RewriteEngine On
RewriteCond %{HTTPS} =off
RewriteCond %{REQUEST_URI} !^/page.php
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]

После этого все страницы, кроме указанной, будут перенаправлены. 

Для одной страницы

Если же, наоборот, необходимо перенаправить единственную страницу, добавьте 4 строчки кода: 

RewriteEngine On
RewriteCond %{HTTPS} =off
RewriteCond %{REQUEST_URI} =/page.php
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]

С https на http

Чтобы провернуть обратный редирект и лишить всех страниц SSL-сертификата, используйте следующую комбинацию синтаксиса:

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

Это должно связать страницы доменов и дать им протокол http.

С 404 Not Found

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

Синтаксис:

ErrorDocument 404 http://www.site.com/301.html 

В итоге все обращения к 404 страницам будут завершаться на главной странице сайта. 

Итогом данного редиректа будет являться перенаправление всех обращений к страницам 404 на главную страницу сайта.

Со страниц со слешем на без слеша

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

Синтаксис:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule ^(.+)/$ /$1 [R=301,L]

В итоге слэш просто удалится. 

Со страниц без слеша на слеш

Можно провернуть и обратную операцию. Для этого пропишите:

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*[^/])$ $1/ [L,R=301]

Результат — добавленный слэш на страницах без него.

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

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

Один (а не два последовательных!) 301 редирект на c www и со слешем на конце адреса страницы

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

Один (а не два последовательных!) 301 редирект на c www и без слеша на конце адреса страницы

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

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

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

Только адреса site.ru/index.php на основное зеркало site.ru

Чтобы перенести сайт без GET-параметров, пропишите в файле:

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

Всех адресов с index.php и GET параметрами на страницы только с GET параметрами 

Проводится при помощи команды:

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

Итог: index.php в url будет вырезан.

Для index.php, index.html или index.htm

Провести массовую склейку на любой CMS, например, Joomla, можно при помощи кода:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(php|html|htm)\ HTTP/ 
RewriteRule ^(.*)index\.(php|html|htm)$ http://site.ru/$1 [R=301,L]

Url с GET параметрами на статический

Есть 2 варианта переноса сайта с динамическим-URL на статический:

1 вариант — простой адрес с GET параметром:

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

2 вариант — со страницы и GET параметром:

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

Каждая страница одного домена на такой же адрес другого url

Подобная операция совершается при помощи кода:

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

Редирект для PHP

PHP— это сервероориентированный язык, поэтому такой вид редиректа будет проводится
на уровне сервера, а не браузера, что обеспечивает высокую скорость работы. При этом каждой страничке, на которую будет производиться редирект, присваивается свой уникальный REFERER, а это значит, что скрыть страницу-источник не получится.

Чтобы редирект сработал, его чтение должно проводится в первую очередь — до того, как
на экран будет выведен первый символ. Поэтому ставить пробел перед <? нельзя.

Код редиректа на примере файла index.php:

<?php
header («Location: https://stokrat.org/», TRUE, 302);
?>

или

<?php
header («Location: https://stokrat.org/», TRUE, 301);
?>

Если Вы подключаете 302 редирект, выбираете первый вариант; если 301 — второй.
Дело в том, что через PHP, как правило, настраивают именно временное перенаправление.

Редирект 301 в разных панелях управления хостингом

Мы разберем две наиболее популярные панели — Cpanel и ISPmanager.

Чтобы настроить редирект в Cpanel, перейдите в блок  «Домены» => «Перенаправления». Появится окно настройки, где нужно выбрать:

  • тип — постоянный 301;
  • https://www — выбрать старый домен сайта;
  • перенаправляет на — адрес нового домена;
  • поставить галочку напротив «Перенаправлять только с www».

Сохраните настройки и перенаправление готово. 

Через ISPmanager можно править файлы nginx.config или .htaccess, но вся работа уже сделана
за Вас. К примеру, для настройки редиректа https/http достаточно просто убрать галочку с соответствующего пункта в разделе «WWW-домены».

Особенности редиректа для популярных CMS

CMS-системы облегчают процесс настройки редиректа вплоть до пары кликов.
Опишем особенности взаимодействия с различными платформами. 

WordPress

Чтобы перенаправить страницу, Вам нужно скачать плагины из панели управления. Зайдите
в «Плагины» -> «Добавить новый». Из доступных выберите необходимый и скачайте. 

OpenCart

Чтобы совершить редирект через OpenCart достаточно зайти в «Менеджер 301 редиректов»
и выбрать необходимый вариант перенаправления.

Битрикс

В Битриксе Вам нужно обратиться к модулю «Редирект мастер», но за него придется доплатить.
В оплаченном меню стоит выбрать свой вид редиректа и активировать его.  

Joomla

Найти компонент, отвечающий за редирект в Joomla, можно в меню «Компоненты» — > «Перенаправление». Здесь Вы увидите все имеющиеся редиректы и сможете создать новый, заполнить все поля и сохранить настройки. После этого редирект активируется. 

Настройка кириллических доменов .РФ

Для доменов в зоне РФ действуют все те же правила, но только все кириллические символы необходимо заменить на альтернативный код на латинице. В частности, сама зона .рф преобразуется в .xn--p1ai.

Далее представлены синтаксисы для доменов в зоне РФ.

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

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

Редирект на папки со слешем на конце

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\..{1,10}$
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://www.site.ru/$1/ [L,R=301]

Редирект на папку без слеша — убираем слеш на конце

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule ^(.+)/$ http://www.site.ru/$1 [R=301,L]

Переадресация с домена в папку другого сайта

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

Редирект со всех страниц кроме определенной папки

Кроме папки администратора bitrix #

RewriteRule ^bitrix/ /bitrix/admin/ [L,R=301]
RewriteRule ^(.*)$ http://www.newsite.ru/new/ [L,R=301]

Переадресация всех файлов папки на конкретный файл

RewriteRule ^dir(.*)$ /new-file.php [L,R=301]

Переадресация файлов папки на другой файл с исключением

RewriteRule ^dir/no-file.html /no-file-new.html [L,R=301]
RewriteRule ^dir(.*)$ /all.php [L,R=301]

Редирект замены расширений файлов — с html на php

RedirectMatch 301 (.*)\.html$ http://www.new-site.ru$1.php

Редирект с index.php на корень сайта

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://www.site.ru/ [R=301,L] 

Редирект всех индексных страниц на корень

RewriteRule ^(.*)index\.php$ http://www.site.ru/$1 [R=301,L]

Переадресация с поддомена на основной домен

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

Редирект страницы из различных директорий

RewriteRule [^abc]/unique-file.html /unique-file.html [R=301,L]

Создаем ЧПУ-копию динамических страниц

RewriteRule ^testovyi/test/?$ /studio/news/detail.php?ID=230354&PAGEN_2=11 [NC,L]

Код позволяет создать копию страницы с относительным адресом
/studio/news/detail.php?ID=230354&PAGEN_2=11 по адресу /testovyi/test/

Переадресация с https на http

RewriteCond %{HTTPS} "on"
RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,QSA]

Настройка ответа 403 для спама по REFERER

RewriteCond %{HTTP_REFERER} ref-spam-site.ru [NC,OR]
RewriteCond %{HTTP_REFERER} another-ref-spam.ru [NC]
RewriteRule .* - [F]

Обработка ошибки 404 в .htaccess

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

Как узнать, что переадресация работает правильно

Узнать, корректен ли код 301 редиректа можно при помощи браузера. Введите в адресную строку URL страницы, с которой совершается переадресация. В идеале Вы должны увидеть ту страницу и тот URL, на которую был настроен редирект.

После того, как Вы настроили 301 редирект, его необходимо проверить на корректность работы. Для этого введите в адресной строке своего браузера URL страницы, с которой была сделана переадресация. Если Вы видите новую страницу, то есть, ту, на которую сделали редирект
— то все корректно работает.

Также можно заглянуть в Яндекс.Вебмастер, открыть раздел «Инструменты» — > «Проверка ответа сервера». В поле «Опрашиваемый URL» введите адрес старой страницы. Вы должны получить код статуса http — «301 Moved Permanently».

Что делать, если 301 редирект не работает?

Если проверка прошла неудачно и редирект не реализован проверьте ряд параметров:

Синтаксические ошибки

Любой лишний пробел, перенос строки или точка способны помешать работе команды. Копируйте код аккуратно, не добавляя комментариев, номеров строк и т.д.

Использование URL адреса с параметром

«Упрощенный» вариант редиректа в файле .htaccess вида: Redirect 301 «oldpage» «newpage»
— который может уместиться в одну строку, работает исключительно с URL без параметров. 

Команда типа Redirect 301 /index.php?productID=1109 http://dh-agency.ru/for-seo/ работать не будет. Замените ее на Redirect 301 /index.php http://dh-agency.ru/category/for-seo-professionals/.

Некорректное расположение

PHP-код, отдающий заголовок, должен находиться над всеми последующими командами
и выводами. 

Отключен модуль mod_rewrite

Модуль mod_rewrite должен быть подключен и активирован — без него редирект не заработает.

Заключение

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

  • Вы переезжаете лишь на время — лучше используйте 302 или 3074 код;
  • Вы сбегаете от банов, фильтров, штрафов и прочих проблем с доменом — при переезде
    Вы захватите все проблемы с собой.

Если же причины переадресации обоснованы, смело прописывайте 301 код
— благо теперь Вы знаете, как это делается. 

Общая оценка / 5. Всего проголосовало

Отправить ответ

avatar