- php Почему не работает редирект Warning: Cannot modify header information — headers already sent by. Ошибка Решение
- Primary tabs
- Forums:
- Описание частной проблемы
- Когда это бывает
- Корень проблемы
- Эксперимент
- Ещё раз уточним причину
- Key Words for FKN + antitotal forum (CS VSU):
- вопрос решился
- Но можно заставить работать и
- насчёт буферизации
- Не работает редирект
- Перенаправление в php не работает — WordPress
- Решение
- Другие решения
- Что такое 301 редирект и как его настроить
- Что такое переадресация 301
- Альтернативные методы переадресации
- В каких случаях используется постоянный редирект 301
- Создание постоянной переадресации 301 через настройки и плагины CMS
- Настройка 301 редирект в .htaccess
- Склейка зеркал сайта (www / без www)
- Редирект с http на https для всего сайта
- Постранично
- Для одной страницы
- Редирект сайта с https на http
- Изменение домена
- Редирект на страницу с другим url (без параметров)
- Редирект для url (с параметрами)
- Редирект с index.php на главную страницу
- Редирект со страниц со слешем на без слеша (для всего сайта)
- Редирект со страниц без слеша на слеш (для всего сайта)
- 301 редирект с 404 Not Found
- Финальный вид файла .htaccess
- Синтаксис для регулярных выражений в .htaccess
- Другие способы создания переадресации 301
- Через PHP
- ASP-редирект
- ASP.NET редирект
- ColdFusion редирект
- JSP (Java) редирект
- CGI-скрипт на PERL
- Ruby on Rails
- Редирект в Nginx
- HTML-редирект
- Редирект 301 в панелях управления сервера
- Cpanel
- ISPmanager
- Автоматическое создание переадресации
- Проверка корректности настроек 301 редиректа
- Заключение
php Почему не работает редирект Warning: Cannot modify header information — headers already sent by. Ошибка Решение
Primary tabs
Forums:
Описание частной проблемы
После нажатия на кнопку выводится ошибка:
Код аналогичен приведённому в данной теме:
Когда это бывает
Ошибка (предупреждение) типа:
Warning: Cannot modify header information — headers already sent by
Возникает, если вы уже сделали что-то что требует установки заголовков браузера, а теперь хотите переписать их новыми. Например, если вы уже вывели текст — то php выставляет заголовки (в частности заголовок Location — которые показывает оставаться ли на запрошенной странице или же нужно нужно перейти на другую страницу и уже там получить ответ на запрос), чтобы показаться браузеру клиента (в своём ответе) как себя вести.
Корень проблемы
Помните, что функцию header() можно вызывать только если клиенту еще не передавались данные. То есть она должна идти первой в выводе, перед ее вызовом не должно быть никаких HTML тэгов, пустых строк и т.п. Довольно часто возникает ошибка, когда при чтении кода файловыми функциями, вроде include или require, в этом коде попадаются пробелы или пустые строки, которые выводятся до вызова header(). Те же проблемы могут возникать и при использовании одиночного PHP/HTML файла.
— то есть необходимо избавить скрипт-обработчик от html — ведь он по сути сам ничего не выводит а просто перебрасывает на другой адрес — это первое.
Далее, на самом деле заголовок Location следует менять так:
Эксперимент
Так как echo() вообще-то пишет в тело http ответа, а не в заголовки, а header возвращается void (то есть не возвращает значений), о чём было сказано выше, то смысла в использовании echo() нет, но
— тем не менее, предлагаю провести эксперимент:
- уберите html
- не убирайте echo
— так как header() вызывается у вас по сути до echo() (так как header() является аргументом echo()) а значит возврат — заодно проверим если функция возвращает null — будет ли это интерпретироваться как пустая строка или же (что вернее) echo даже не начнёт работать как уже произойдёт редирект.
Ещё раз уточним причину
Т.е. перед вызовом header() не должен выводиться никакой контент ( о чем написано к описанию функции: http://php.net/manual/ru/function.header. )
- 1) ни с помощью echo
- 2) ни с помощью обычного вываливания в браузер html-текста.
В нашем случае судя по всему echo не влияет ни на что, а вот html в обработчике очень даже влияет.
Key Words for FKN + antitotal forum (CS VSU):
Thu, 05/04/2017 — 14:00
вопрос решился
По Вашему совету были удалены теги HTML. Теперь переадресация происходит корректно, скрипт-обработчик выглядит так:
Функция echo действительно не влияет на работу, т.е . можно оставить и как у С. Хольцнера:
Также при оформлении кода для редиректа следует обратить внимание на расширение файла, на который производится переход: при предложенном синтаксисе, оно должно быть указано в аргументе header.
Thu, 05/04/2017 — 14:21
Но можно заставить работать и
Но можно заставить работать и предыдущий обработчик
если выставить в файле php.ini опцию
Thu, 05/04/2017 — 14:32
насчёт буферизации
По — умолчанию никакой буферизации вывода нет ( если, конечно вы не нашаманили в файле php.ini и не присвоили директиве output_buffering значение On ) и PHP отсылает данные юзеру, сразу, как только они готовы. Согласно протоколу HTTP, сервер в ответ на запрос пользователя, должен сначала отправить ему служебные заголовки, а уже после, тело страницы. А тут внезапно, в коде вы опять пытаетесь заставить его отправить HTTP — заголовки, вызывая, скажем функцию session_start() — после удачной авторизации. Ясен пень — повторная отправка заголовков запрещена, HTTP — протокол так не работает! Но что ж делать то? Если после вывода на странице, нужно ещё и сессию стартануть и кУку поставить? — Вспоминаем про буферизацию вывода.
— то есть когда выставлен ненулевой размер буфера, то пока он не заполнится ещё есть возможность манипулировать заголовками. При нулевом же размере буфера, после вывода контента, его отдача сразу же предваряется передачей клиенту заголовков http-ответа.
И получается, что мы хотим изменить заголовки, которые уже «улетели» по сети клиенту (а значит, исправить их уже невозможно — в частности заголовок Location, который указывает оставаться ли на запрошенной странице, или запросить другую — ответ скрипта-«перенаправителя» (у нас это обработчик формы) как раз говорит о том, что надо запросить другую страницу), о чем php нас и предупреждает.
Но: решать проблему таким способом конечно нельзя (не сильно корректно, точнее).
_____________
матфак вгу и остальная классика =)
Источник
Не работает редирект
На локалхосте всё отлично работало, перенес сайт на хостинг перестало работать перенаправление
В чём может быть причина?
Провреил, сделал пустой файл с таким содержимым, работает перенаправление, а на других страницах нет%)
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Не работает редирект
Доброй ночи! Я написал форму и сделал к ней проверки, если все норм то человек переходит на.
Не работает редирект
Всем привет! Хочу склеить сайты с WWW и без — но ничего не выходит, обыскал пол интернета, все.
Не работает редирект
нужно через мою программу запускать как дочерний процесс разные программы на паскале.вот к примеру.
Не работает редирект
Всем привет! Хочу склеить сайты с WWW и без — но ничего не выходит, обыскал пол интернета, все.
Не работает на хостинге.
Если объяснишь популярно, что ты этим хочешь добиться, и покажешь весь код (включая html-разметку) неперенаправляющегося файла, то попробую те помочь.
Добавлено через 2 минуты
а вообще может модуль какой не включен на хостинге для редиректа? хотя по твоим словам «сделал пустой файл с таким содержимым, работает перенаправление» — дб все включено.
а если так написать http://www.lalala/index.php
Так объясняю, сделал сайт на локалхосте — всё работает. перенес его на внешний хостинг, начал тестировать. на странице авторизации, есть редирект. http://presentation.gostkov.ru/
юзер: test, пароль: 1
при атворизации получаем белый экран.
Погуглив наткнулся на такой текст, что header может не работать если перед ним происходит какой то вывод на экран, я создал файл в нем только код перенправления, редирект заработал,
добавил строку echo «hello»; ставл выводить hello, я протестировал это код на локалхосте, на локалхосте происходит редирект!
Добавлено через 34 минуты
Тех.поддержка ответила:
Перед header’ом никаких вызовов быть не должно.
/* This will give an error. Note the output
* above, which is before the header() call */
Источник
Перенаправление в php не работает — WordPress
Я (впервые) разрабатываю плагин для WordPress, который представляет собой простую форму регистрации. Он отправляет данные в API. На странице настроек вы можете выбрать, на какую страницу будет перенаправлен пользователь после успешной отправки. Но редирект не работает.
Я получаю ссылку на страницу, как это:
Даже если я установлю расположение заголовка, например, следующее не работает:
Здесь вы можете увидеть, как я настраиваю свою форму:
Я надеюсь, что кто-нибудь может помочь мне решить эту проблему.
Решение
Если один из них не работает … Вы делаете что-то не так
Другие решения
Вы действительно можете взять ссылку из этой темы Как сделать редирект в PHP?
С другой стороны может быть какая-то синтаксическая ошибка. Пожалуйста, попробуйте заменить ваш код на header(«Location: «.$successLink.»»);
Попробуйте сбросить переменную $ successLink с var_dump($successLink); , Проверьте, извлекает ли ваша переменная нужные ссылки из заголовка страницы или нет.
Вы также можете перенаправить с wp_redirect() функция. Посмотрите вокруг https://developer.wordpress.org/reference/functions/wp_redirect/
WordPress имеет встроенную функцию для перенаправления wp_redirect() .
Вы можете использовать это так:
Надеюсь это поможет!
Спасибо за помощь, но мне пришлось работать с другим решением.
Прежде всего я должен был установить action -атрибут form -элемент пустой.
мой if -статмент выглядит немного по-другому (сейчас я просто вызываю функцию здесь):
rfw_success_redirect() функция выглядит так:
В моем javascript.js Я устанавливаю window.location = scriptParams.successLink;
Поэтому мне пришлось использовать JavaScript, чтобы перенаправить страницу.
Источник
Что такое 301 редирект и как его настроить
При работе с веб-ресурсами возникают ситуации, когда происходит удаление, перенос или изменение url-адреса отдельных страниц или сайта целиком. При этом требуется сохранить индексацию в поисковых системах и перенаправить пользовательский трафик на новый адрес. Для решения этой задачи используется функция под названием 301 Redirect. Это один из инструментов SEO, который позволяет не только избежать ошибок при открытии отдельных страниц, но и добиться корректной работы ресурса. Правильные настройки редиректа дают дополнительную возможность получить синергетический эффект в поисковой оптимизации и увеличить количество органического трафика на релевантные страницы. Рассмотрим более подробно, как происходит настройка редиректа 301.
Что такое переадресация 301
Permanent Redirect 301 применяется с целью организации постоянной переадресации с неактуального доменного адреса или url отдельной страницы на рабочую версию. Редирект может понадобиться в связи с глобальным переносом сайта на другой домен, техническими изменениями в написании адреса, удалением страниц, необходимостью внутренней и внешней перелинковки. Один из вариантов использования перманентной переадресации – редирект с нескольких доменных имен, созданных в разных зонах, на один актуальный адрес. Грамотное использование редиректа позволяет перемещать контент без потерь в поисковой индексации, сохранить и даже увеличить прежний вес и позицию в выдаче.
Настроить код состояния HTTP 301 можно разными способами:
с помощью HTML и PHP;
через панель управления или плагины соответствующей CMS;
при помощи специальных скриптов (программ);
на уровне хостинг-провайдера;
внесением соответствующих записей в файлы .htaccess для сервера Apache или web.config для IIS.
Последний способ является наиболее простым и надежным. О нем чуть позже поговорим подробнее.
Альтернативные методы переадресации
- Редирект 302. Применяется в случае временной переадресации с одного url на другой. При его использовании поисковая система индексирует все доступные версии сайта или страницы. Объединения ссылочного веса и внутренних метрик на приоритетном ресурсе не происходит.
- 307 Temporary Redirect рекомендуется применять в исключительных случаях. Например, при техническом обслуживании сайта, когда он недоступен некоторое время.
- Обновления Meta Refresh выполняют переадресацию не на уровне сервера, а непосредственно на сайте. Пользователь сталкивается с временной задержкой (обычно около пяти секунд), после чего для перехода на нужную страницу должен принудительно запустить определенную команду. Этот метод часто приводит к падению посетительского интереса и проседанию поисковых индексов.
- Редирект rel=«canonical». Позволяет сохранить доступ посетителям ресурса к контенту дублирующихся страниц. При этом для поисковиков наличие команды canonical на одной из страниц говорит о том, что только она подлежит индексации в поиске.
В большинстве случаев постоянная переадресация является более правильным решением, чем временная. На практике это объясняется просто. Предположим, сайт сменил доменную зону, а затем еще и обзавелся защищенным протоколом https. При настройке временной переадресации в индексе Яндекса и Google по одним и тем же запросам появились три версии сайта с пропорциональным проседанием позиций в выдаче. После настройки редиректа 301 на приоритетный url произошло склеивание дублей, робот вернул сайт в топ выдачи.
Не рекомендуется использовать постоянный редирект при временном переносе сайта или наличии серьезных проблем со старым доменным именем. Если адрес забанен или попал под поисковую фильтрацию, смена дислокации с применением переадресации не поможет избавиться от этих ограничений.
В каких случаях используется постоянный редирект 301
Смена доменного имени, перенос сайта. Необходимо произвести тотальную настройку переадресации со старого адреса на новый, чтобы все без исключения запросы к old_site.ru перенаправлялись на new_site.ru.
Изменение написания url определенных страниц в целях SEO-продвижения, смены CMS или по иным причинам. Требуется настроить редирект с site.ru/1hdkr5 на site.ru/page_adress.
Перенос разделов на субдомены. Необходимо сменить адрес www.site.ru/example на example.site.ru.
Для аккумуляции трафика с адресов, купленных в разных доменных зонах, на один приоритетный ресурс.
Исключение дублирующихся страниц из индекса.
Склейка зеркал сайта – вариантов сайта с идентичным контентом, но разным написанием адресов: site.ru, www.site.ru, https://site1.ru и т.д. В этом случае выбирается один приоритетный домен и на него настраивается редирект со всех остальных зеркал.
Удаление ранее существовавшей страницы. В этом случае пользователи обычно видят ошибку 404. Большое количество таких сообщений негативно воспринимается как пользователями, так и поисковиками.
Для быстрого перехода пользователя на мобильную версию ресурса со смартфонов и планшетных устройств.
Создание постоянной переадресации 301 через настройки и плагины CMS
В большинстве популярных конструкторов сайтов и CMS (OpenCart, Joomla!, Битрикс, Wix, Тильда) предусмотрена настройка редиректов с помощью встроенных инструментов. Если сайт создан с помощью WordPress, для настройки переадресации можно воспользоваться следующими плагинами:
Redirection — самый популярный плагин для настройки редиректов. Кроме основной функции обладает следующими возможностями: сбором статистики переадресаций, отслеживанием ошибок 404, поддержкой регулярных выражений.
Safe Redirect Manager — простой плагин, который также поддерживает регулярные выражения, практически не влияет на производительность сайта.
Quick Page/Post Redirect Plugin — еще один удобный инструмент оптимизации. Один из недостатков — отсутствие поддержки регулярных выражений. К ссылкам можно добавлять атрибут «nofollow».
Simple 301 Redirects. Данный модуль обладает одним недостатком – url для переадресации необходимо прописывать вручную.
Настроить Permanent Redirect 301 в Вордпресс можно и через редактирование файла .htaccess в разделе управления хостингом. Чтобы подключиться к нему, потребуется использовать FTP-клиент. Сама кодировка производится по общим правилам настройки переадресации в .htaccess.
Чтобы настроить 301 редирект в CMS OpenCart в файле .htaccess необходимо прописать:
Для Битрикс кодировка будет выглядеть следующим образом:
В Joomla настройки переадресации производятся через панель администратора в разделе «Компоненты» => «Перенаправление». Здесь можно не только установить правила редиректа, но и отслеживать страницы с битыми ссылками и перенаправлять их на корректные адреса.
С конструкторами сайтов все не так однозначно. Например, один из наиболее популярных CMS-конструкторов WIX не предоставляет возможности создания файла .htaccess.
Но настроить редирект 301 довольно просто в базовом редакторе.
Настройка 301 редирект в .htaccess
Файл с расширением .htaccess – это дополнительный конфигурационный файл web-сервера Apache. Его используют для настройки веб-сервера, а также для обработки различных URL-адресов.
Для настройки 301 редиректа в файле .htaccess чаще всего применяют одну из трех директив: Redirect, RedirectMatch или RewriteRule. Директивы относятся только к папке, где размещен .htaccess, а оттуда распространяются на дочерние папки.
Найти файл можно через панель управления хостинга либо использовать FTP-клиент. При любом варианте нужно включить отображение скрытых файлов.
Для создания 301 редиректа перейдите в панель управления вашего сайта.
Проверьте наличие .htaccess файла в корневом каталоге сайта (public_html, если используете WordPress). Если файл отсутствует, создайте его.
Рекомендуем все условия редирект записывать в блоке IfModule, дабы избежать ошибок при выполнении файла htaccess.
Перед тем как начать прописывать правила перенаправления, необходимо включить механизм преобразований (RewriteEngine) при помощи команды RewriteEngine On.
Хостинги применяют по умолчанию 302 или любой другой 3xx редирект. В связи с этим в правилах используются флаги. Рекомендуем дописывать в своих правилах [R=301,L].
Разберем наиболее распространенные варианты создания 301 редиректа через .htaccess.
Склейка зеркал сайта (www / без www)
Сайты http://name.site и http://www.name.site для поисковых систем являются разными. А по факту это разные адреса одного сайта.
В поисковой системе сайт по одному адресу будет проиндексирован, а по второму адресу зафиксирован как дубль, что может повлиять на продвижение ресурса. Для избегания дублей необходимо сделать так называемую «склейку» сайта, то есть прописать 301 редирект в .htaccess.
Если изначально в индекс поисковой системы попала версия «с www», в файл .htaccess добавляется редирект на «без www»:
Если произошла обратная ситуация и необходима переадресация с без «www» на «www», то в файл прописывается:
Редирект с http на https для всего сайта
В случае перехода на защищенный протокол https для всего сайта, необходимо настроить перенаправление с http на https. Для этого в файл .htaccess добавьте:
Если данная конструкция не сработает, попробуйте другой вариант:
Если редирект не работает и в этом случае, попробуйте такой вариант:
В результате пройдет перенаправление на https всех пользователей и поисковых систем.
Постранично
Бывают случаи, когда необходимо создать редирект на https всех страниц, кроме одной. В этом случае используют постраничный редирект:
Для одной страницы
Для редиректа с http на https одной страницы (например page.php), в файл добавьте следующую конструкцию:
Редирект сайта с https на http
Если необходимо сделать 301 редирект всего сайта с https на http, в файл прописывается следующее:
Изменение домена
В том случае. если необходимо перейти на другой домен, при этом сохранив SEO-позиции, в файл .htaccess прописывают следующее:
Редирект на страницу с другим url (без параметров)
Иногда возникает ситуация, когда необходимо изменить url страницы, то есть перенести данные с одной страницы на другую страницу, при этом не потеряв вес страниц. В этом случае в файл .htaccess прописывают следующее:
Редирект для url (с параметрами)
Если адрес содержит параметр (например, http://name.site/articles.php?section=1, где параметром является «section=1» ), то прописывают следующую конструкцию:
Редирект с index.php на главную страницу
В тех случаях, когда главная страница сайта может быть недоступна по нескольким адресам одновременно, применяют следующую конструкцию:
Редирект со страниц со слешем на без слеша (для всего сайта)
Для избегания дублей в файле .htaccess используют следующую конструкцию:
Или более короткий вариант:
Редирект со страниц без слеша на слеш (для всего сайта)
Обратный вариант применяется, когда нужно использовать адреса со слешем.
301 редирект с 404 Not Found
Код 404 Not Found (страница не найдена) присваивается удаленной или несуществующей странице на сайте. Создание постоянного перенаправления с таких страниц актуально для контентных сайтов и крупных интернет-магазинов, где страницы часто удаляются по естественным причинам. Тогда возникает потребность перенаправить посетителей на одну из главных страниц сайта, чтобы они не уходили с ресурса при виде ошибки.
301 редирект для страниц 404 Not Found сделать совсем не сложно. Например, этот код перенаправит со всех 404-страниц на главную:
Однако делать такие редиректы в массовом порядке не рекомендуется, так как это может испортить SEO-статистику всего ресурса.
Финальный вид файла .htaccess
Пример файла htaccess, после добавления в него редиректов:
Синтаксис для регулярных выражений в .htaccess
точка заменяет произвольный символ
обозначает перечень знаков, совпадающих с буквами a, b, или с
список символов вне указанного диапазона (кроме a, b, с)
указывает на то, что предыдущий знак может повторяться 0 или больше раз
команда найдет идущие подряд символы из заданного набора
приводит к противоположному эффекту
заменяет любой набор символов
ищет все подстроки между кавычками
начало строки (когда используется в начале выражения)
означает конец строки
цифра, буква или подчеркивание _
заменяет любую цифру
может заменить любой знак, кроме цифры
для замены любой цифры
для всех букв от a до z в нижнем регистре
для каждой буквы от A до Z в верхнем регистре
любая буква от a до Z во всех регистрах
Важно учитывать, что настройка редиректа путем редактирования файла .htaccess доступна исключительно для веб-серверов Apache.
Другие способы создания переадресации 301
Через PHP
Данный вариант подойдет тем, кто хорошо разбирается в web-программировании и PHP. Необходимо открыть файл index.php в корне CMS-движка и прописать там:
(в первой строке укажите старый url, а во второй — новый)
Второй способ — перенаправление при помощи отправки заголовков (скрипта):
ASP-редирект
ASP.NET редирект
Найдите в корне своего сайта файл web.config и вставьте в секцию синтаксис:
ColdFusion редирект
JSP (Java) редирект
Данный способ подойдет для небольшой корректировки простых сайтов. Код можно прописать лишь в одном файле, а сам файл добавить на все нужные страницы, указав:
CGI-скрипт на PERL
Ruby on Rails
Редирект в Nginx
HTML-редирект
Этот способ подойдет для небольших статических сайтов, когда требуется настроить переадресацию для одной страницы. Для этого необходимо добавить специальный мета-тег внутри кода HTML. Пример записи редиректа на другой ресурс после 5-секундной задержки:
Если поставить значение 0 вместо 5, то переадресация на https://livepage.pro произойдет моментально.
Однако для больших сайтов HTML-перенаправление делать сложно и затратно по времени, поэтому лучше отдать предпочтение другому варианту.
Редирект 301 в панелях управления сервера
Большинство панелей управления сервера предоставляют возможность настройки переадресации с кодом 301. Рассмотрим варианты решения этой задачи на примере двух популярных ПУ для VDS.
Cpanel
Нужно перейти в блок «Домены» => «Перенаправления». В появившемся окне выполнить следующее:
В строке «Тип» выбрать «Постоянный 301».
В строке «https://www» из выпадающего списка выбрать домен сайта (например, example.ru).
В строке «Перенаправляет на» указать для домена адрес http://example.ru.
В блоке «Перенаправление www» поставить галочку напротив «Перенаправлять только с www».
Сохранить изменения кликом на «Добавить».
ISPmanager
В этой панели можно вручную править файлы nginx.config или .htaccess, но есть и встроенный механизм переадресации. Например, для настройки редиректа на https/http нужно снять галочку с соответствующего пункта в разделе «WWW-домены».
Автоматическое создание переадресации
При отсутствии знаний и опыта самостоятельной настройки редиректа можно воспользоваться сервисами автоматической генерации:
Generate .htaccess— для страниц, разделов сайтов, доменов.
Проверка корректности настроек 301 редиректа
Самый простой способ проверки переадресации – ручное тестирование. Для этого необходимо вставить в адресную строку браузера url сайта или страницы, с которой настроено перенаправление. Если при открытии будет доступен ресурс, на который настроен редирект, то переадресация выполняется правильно.
Для автоматической проверки можно воспользоваться специальными сервисами:
программой Screaming Frog Seo Spider, способной просканировать весь сайт.
Существует ряд ошибок, которые следует избегать при настройке редирект 301:
использование перенаправлений между страницами сайта без изменения их url в ссылках;
установка временной переадресации вместо постоянной;
неправильный выбор типа редиректа;
перенаправление файла robots.txt;
непонимание разницы между rel=canonical и кодом 301;
редирект на нерелевантный контент;
переадресация, которая не приводит к 200-й странице.
Стоит отметить проблему создания цепочки ссылок, которая может привести к появлению циклического редиректа — ошибки с кодом «ERR_TOO_MANY_REDIRECTS». Наиболее распространенные причины возникновения такого бага – неправильная настройка в процессе создания переадресации, вирусная атака, слишком длинная цепочка редиректов. Не рекомендуется настраивать редирект, содержащий более пяти адресов. Оптимальной является прямая переадресация со старого на новый url.
Заключение
Использование редиректа 301– очень важный способ поисковой и пользовательской оптимизации веб-ресурса. Использовать его следует с осторожностью. Неправильная настройка может привести к сбоям в работе сайта и потере поисковых позиций.
Источник