Настройка редиректов
Различные способы настройки редиректов.
Al-Sher «>2019-08-08 20:11:03
Наиболее часто встречаемым для меня является редирект 302. Начнем создание данных редиректов! 🙂
Методы html.
В html существует специальный meta-тег, который осуществляет редирект пользователя на другую страницу. Выглядит он следующим образом:
Методы javascript.
Используя javascript, мы так же можем совершить перенаправление пользователя на другую страницу. Для этого можно воспользоваться следующим способом:
То есть редирект осуществляется путем изменения параметра location у объекта window. Если необходимо осуществлять редирект спустя некоторое время, то можно воспользоваться функцией setTimeout и тогда код примет следующий вид:
Методы php.
Используя php мы можем передавать браузеру нужный нам http-код. Для этого существует функция header. Пример перенаправления пользователя:
Данный код перенаправит пользователя, используя 302 http-код. Указав в данную функцию дополнительные параметры, мы можем изменить http-код на необходимый нам. Например, осуществим 301 редирект:
Если нам необходимо осуществить перемещение пользователя спустя некоторое время, то нам необходим следующий код:
Методы nginx.
Мы можем осуществлять редиректы, используя nginx. Данный метод осуществляется в основном для перенаправления пользователей на защищенную версию сайта(https) или наоборот(на http). Используя nginx, мы можем осуществить перенаправление пользователей двумя способами:
Пример использования rewrite:
Если нам необходимо добавить 301 или 302 http-код, то необходимо дописать к коду выше permanent или redirect соответственно. Например, для 301 http-кода запрос будет выглядеть так:
Пример использования return:
Ну и раз выше я говорил про перенаправление пользователей на защищенную версию сайта(https), то сразу приведу и пример кода:
Методы apache.
В Apache используется модуль mod_rewrite, отвечающий за перенаправление пользователей. Поэтому перед использованием apache для редиректов, необходимо загрузить модуль:
Данный код перенаправит пользователя со страницы index.html на страницу new.html с http-кодом 301.
Данный модуль дает возможность использовать специальные правила, указанные в RewriteCond. С помощью данных правил, мы можем осуществлять редирект на безопасную версию сайта. Вот пример кода для такого перенаправления:
Заключение.
В качестве заключения хочу лишь сказать, что различные методы перенаправления используются в различных случаях. Например, перенаправление на защищенную версию сайта или на поддомен www лучше всего осуществлять с помощью правил nginx или apache. А вот перенаправление пользователей с какой-либо страницы после совершения какого-либо действия удобнее осуществлять с помощью javascript. В случае, когда нет доступа к конфигурации веб-сервера, намного удобнее использовать php или javascript. Meta-теги для перенаправления следует использовать лишь в крайних случаях.
Гид по 3хх редиректам
Все что нужно знать о кодах ответа 3хх
Все прекрасно знакомы с кодами ответа 301 и 302 — это HTTP коды перенаправления. На самом деле они далеко не единственные и существует еще несколько различных типов редиректов, многие из которых мы, как SEO-специалисты, не используем. Хотя иногда, сканируя сайт, можно увидеть, что некоторые страницы отдают код ответа 307. И вот вопрос — что с ними делать? Нужны ли они нам вообще?
Собственно, сначала нужно разобраться в теории — для чего созданы различные типы редиректов и когда они используются.
Напомним, что переадресация URL (редирект) — это функция сервера, которая отправляет клиента и поисковую систему с одного URL-адреса на другой. Чаще всего редиректы автоматические и классифицируются с помощью кодов ответа, определенных в протоколе HTTP.
Какие бывают коды редиректов:
Забегая наперед: в статье будут использоваться термины GET, POST, HEAD запросы. Поэтому тем, кто, прочитав это, напрягся и начал чувствовать себя неуверенно — посмотрите справку в конце этой статьи.
HTTP 300 — Multiple Choice (Множественный выбор)
300 код ответа возвращается, когда запрашиваемый ресурс (страница) имеет более одного «пункта назначения» со своим уникальным идентификатором. То есть предоставляется информация об альтернативах, чтобы пользователь (или браузер) мог выбрать предпочтительный конечный ресурс, перенаправив свой запрос на один или несколько из этих идентификаторов.
Обычно разрешается максимум 5 адресов. Браузер может сделать выбор из этого списка автоматически, если он понимает предоставленный тип носителя.
Когда дают право выбрать
Представьте, что это страница «Википедия:Неоднозначность», когда Вики предлагает перечень ссылок, чтобы вы могли найти нужный ответ на свой вопрос.
Когда используют
Используют, чтобы браузер или пользователь имели право выбирать наиболее подходящую страницу для своих потребностей. К примеру, так можно представить опции разных форматов файла, несколько языковых версий. В целом, это довольно редкое явление и имеет мало общего с вашим SEO.
HTTP 301 – Moved Permanently (Навсегда перемещен)
Этот статус указывает на то, что ресурс навсегда изменил URL. То есть для запрашиваемой страницы был установлен новый адрес и последующие обращения к ней должны осуществляться по заданному новому URI.
Со временем поисковая система обновит свой индекс, заменив старый адрес страницы на новый. Браузеры и другие типы клиентов закэшируют новый URL-адрес и будут автоматически следовать редиректу напрямую, не проверяя оригинал для последующих запросов. Сохраненные закладки также обычно обновляются.
301 редирект может быть задан в файле htaccess, index.php или httpd.conf на сервере или в системе управления контентом. Например, есть несколько плагинов WordPress для управления 301 редиректами.
При изменении структуры URL-адресов на сайте очень важно настроить 301 редирект для каждого нового адреса. Невыполнение этого требования приведет к снижению доверия к сайту поисковой системы и пользователей.
Когда используют
Часто используют 301 редирект, чтобы устранить дубли страниц, перенаправить робота и пользователя с неактуальной страницы или имеющей код ответа сервера 404. Редиректы с кодом ответа 301 настраивают, когда меняется структура URL-адреса после обновления дизайна или переезда; при настройке главного зеркала сайта.
Как настроить
Все способы настройки 301 редиректа с примерами смотрите в нашей статье Как настроить 301 редирект
301 редирект должен быть постоянным, но насколько постоянным может быть постоянство?
Представитель Google Джон Мюллер как-то дал ответ по поводу длительности 301 редиректа: «… Это может быть год, а в идеале даже больше года, так что мы (Google) действительно могли быть уверены, что все, что указывало на старые URL, указывает на новые URL».
Такая философия нам ясна, продолжаем.
HTTP 302 – Moved Temporarily, Found (Временно перемещен)
Код ответа 302 используется для временных перенаправлений. Поскольку конечный адрес может быть изменен в любой момент, браузер должен продолжать использовать старый URI-адрес и дальше.
По поводу PageRank. Официальная версия Google – любой тип 3xx переадресации (в том числе и 302) не теряет PageRank. Тем не менее, это не значит, что можно не переживать, если у вас настроен 302 редирект для постоянного перенаправления.
Google не заменяет старый URL на новый в своем индексе, но если он поймет, что 302 редирект был настроен по ошибке вместо 301, то переиндексирует URL вам на радость.
Безусловно, для этого нужно некоторое время — если это вообще случится. Вероятность этого такая же, как и того, что Google не будет индексировать закрытые в robots.txt страницы, но это уже совсем другая (печальная) история. Так вот, поисковая система, скорее всего, будет ранжировать такой URL-адрес ниже, чем если бы Вы настроили постоянное перенаправление.
Когда используют
302 редирект не настраивают для адресов, которые изменились навсегда. Такой редирект используют, чтобы исходная страница оставалась в индексе или, если посадочная часто меняется. Чаще всего 302 редирект настраивают когда изменяются URL-адреса во время обслуживания сайта, чтобы контент по-прежнему был доступен по другому URL-адресу.
Также мы слышали, что существует такая практика: настроить 302 редирект для товара, которого нет в наличии. Мы не рекомендуем так делать. Лучше, указать на товаре, что сейчас его нет в наличии и добавить блок с похожими или интересными для пользователя товарами на этой странице:
На что стоит обратить внимание
302 лучше настраивать для временного перенаправления адреса, если будет использоваться GET и HEAD метод передачи запроса, так как работу 302 редиректа с другими запросами (POST, PUT) сложно спрогнозировать.
В случае, если используются запросы отличные от GET/HEAD, рекомендуется настраивать 307 редирект (о нем читайте ниже).
HTTP 303 – See Other (Просмотр других ресурсов)
На практике код ответа 303 похож на 302, но он не обозначает перемещение запрашиваемого адреса.
303 код ответа сервера указывает, что запрашиваемый ресурс можно найти по другому URL. То есть — браузеру только предоставляется адрес. Этот конечный адрес не кэшируется.
Когда используют
303 редирект настраивают в случае, когда на определенный запрос браузера нет подходящего ответа (страницы), но можно предложить более-менее удовлетворительный.
С 303 редиректом раньше отлично были знакомы разработчики, так как после POST отправки формы на сайте необходимо было настроить переадресацию, чтобы избежать повторной отправки формы после возможной перезагрузки страницы пользователем.
На что стоит обратить внимание
Некоторые (устаревшие) клиенты не интерпретируют статус 303. В таких случаях применяется 302 редирект.
HTTP 304 – Not Modified (Не модифицировано)
Браузеры могут отправлять запрос, который спрашивает, был ли ресурс изменен после определенного времени. Для внесения информации о последнем редактировании веб-страницы созданы заголовки Last-Modified и If-Modified-Since.
Браузер отправляет запрос, если ранее он уже загружал страницу и закэшировал ее. Если содержимое страницы было изменено с того времени как то сервер даст ответ со статусом 200 OK. Или, если ресурс не был изменен, сервер отправит статус 304 Not Modified – произойдет переадресация на сохраненную копию страницы.
Когда используется
Когда ответ сервера сигнализирует, что страница не изменялась со времени создания последнего кеша. То есть браузеру нет смысла повторно проверять страницу.
SEO-специалисты используют If-Modified-Since и Last-Modified.
Основная цель использования заголовков If-Modified-Since и Last-Modified состоит в том, чтобы обеспечить эффективное обновление кэшированной информации. Управление кэшем поможет улучшить скорость загрузки страницы, а также улучшить общую производительность веб-сайта и, тем самым, удобство для пользователей.
С точки зрения SEO, контролировать обновление кэша очень важно, потому что так можно улучшить сканирование и индексацию сайта.
Вы же помните, что для каждого сайта есть определенный краулинговый бюджет, и задача оптимизатора состоит в том, чтобы максимально эффективно использовать его.
Проблемы со сканированием, само собой, встречаются на действительно больших сайтах — сканируются страницы, которые вовсе не приоритетные для нас, а до необходимого контента робот может так и не дойти. Например, страница «О нас» может часто сканироваться, потому что на нее стоит ссылка на каждой странице сайта в шапке или в футере. Поэтому робот может считать ее важной, хотя на самом деле это не так.
Настроив If-Modified-Since и Last-Modified, можно показать роботу какие именно страницы есть смысл переобходить, а какие так и остались не измененными.
В целом, ускоряется загрузка страниц для пользователей, снижается нагрузка на сервер, в результатах поиска может отображаться дата последнего обновления содержимого страницы, существенно ускоряется индексация страниц.
HTTP 305 – Use Proxy (Использовать прокси)
Переадресация со статусом 305 происходит, когда запрашиваемый ресурс доступен только через прокси-сервер. При этом адрес прокси указывается в ответе. Ожидается, что веб-браузер повторит запрос через прокси.
Некоторые браузеры (Mozilla, Internet Explorer) обрабатывают этот статус некорректно. Скорее всего, они расценивают небезопасным тот факт, что запрос отправляется серверу не напрямую.
Когда используется
Как было сказано выше, если получить доступ к странице можно только через прокси сервер. Прокси сервер используют для разный целей — начиная от анонимности и заканчивая необходимостью кэшировать содержимое, чтобы ускорить загрузку страницы.
На что стоит обратить внимание
Этот код был проигнорирован многими поисковыми системами и, фактически, заброшен.
HTTP 306 – Switch Proxy (Зарезервирован)
HTTP 307 – Temporary Redirect (Временный редирект)
Этот статус был создан, чтобы уточнить 302 редирект.
Код ответа 307 означает, что сейчас запрашиваемый ресурс доступен по другому адресу, но потом все равно вернется на прежний URL. Точно так же, как и с 302, страница не кэшируется, а поисковые системы, вероятнее всего, не будут добавлять в свой индекс новый URL.
Этот код ответа аналогичен 302, за исключением того, что он не позволяет изменить метод запроса с POST на GET.
Когда используют
Настраивают 307 редирект в тех же случаях, что и 302 (смотрите выше). 302 всегда использовался для создания временных перенаправлений, но с появлением HTTP 1.1 код ответа 307 конкретизировал его. Хоть 307 редирект является стандартом HTTP 1.1., он более новый и точный, вовсе необязательно, что этот код ответа широко поддерживается серверами, браузерами или поисковыми системами. До тех пор, пока новый стандарт не станет более распространен, лучше всего указывать 302 редирект.
На что стоит обратить внимание
Чтобы различать две предполагаемые особенности кода ответа 302, создали коды 303 и 307. На практике, ни один из них не используется SEO-специалистами намеренно.
HTTP 308 – Permanent Redirect (Перенаправление на постоянной основе)
Этот код ответа — аналог 301 редиректа с той лишь разницей, что он не позволяет изменить метод запроса с POST на GET. Он точно так же автоматически кэшируется и передает внутренний вес на новую страницу.
Стоит отметить, что этот код ответа экспериментальный.
Когда используется
Как вы уже догадались, 308 редирект настраивают в тех ситуациях, где мы используем 301 редирект. Также когда необходимо выполнить перенаправление на сайте с большим количеством форм, использующих метод POST. Или, если для повторного запроса требуется метод POST.
Есть и другие случаи использования 308 редиректа. Например, Google Drive перенаправляет с кодом ответа 308, чтобы показать, что была прервана загрузка данных.
Справка
Чтобы понять, какой редирект использовать, нужно немного узнать о том, как работает HTTP. Сейчас придется потерпеть, но потом вы будете великолепны.
HTTP протокол характеризует взаимодействие между двумя компьютерами (клиентом/браузером и сервером) с помощью запросов и ответов. GET, HEAD и POST — это самые распространенные методы запросов, которые помогают браузеру или клиенту «общаться» с сервером.
GET — получение ресурса (страницы). GET-запросы могут кэшироваться. Они остаются в истории браузера, могут быть добавлены в закладки и используются специально для извлечения содержимого страницы (HTML, изображения, JS, CSS).
HEAD — получение информации заголовка. HEAD полностью соответствует GET запросу с разницей, что при запросе HEAD нас не интересует сам ресурс (страница/документ), а только его HEADER и код ответа.
POST — отправка данных на сервер. Конечно, можно отправлять данные на сервер с помощью GET, но использовать POST запросы правильнее. Отправка больших объёмов данных с помощью GET нецелесообразна и имеет ограничения. Запросы POST чаще всего отправляются веб-формами. Вы точно когда-нибудь использовали форму на сайте, которая, когда вы нажимаете кнопку «Назад» или попытки обновить страницу, выдает предупреждение по типу «Все несохраненные данные будут утеряны». Это потому, что это был запрос POST. POST запросы не кэшируются, не сохраняются в истории браузера и не могут быть добавлены в закладки, поскольку они являются набором команд для сервера, а не запросом статического ресурса.
Та-дааааааам, Вы — великолепны.
Что мы должны использовать?
Работаем мы с такими редиректами: 301, 302, 304, 307, 308. А реально используем 301, 304 и 302. Догадались почему?
Да, потому что 307 и 308 коды ответа сервера еще не полюбились всем браузерам, клиентам и поисковым системам. Поэтому давайте общаться с ними на понятном для них языке.
What’s the difference between HTTP 301 and 308 status codes?
What’s the difference between HTTP 301 and 308 status codes?
301 (Moved Permanently): This and all future requests should be directed to the given URI.
308 (Permanent Redirect): The request and all future requests should be repeated using another URI.
They seem to be similar.
1 Answer 1
See more details below:
The 301 (Moved Permanently) status code indicates that the target resource has been assigned a new permanent URI and any future references to this resource ought to use one of the enclosed URIs. [. ]
Note: For historical reasons, a user agent MAY change the request method from POST to GET for the subsequent request. If this behavior is undesired, the 307 (Temporary Redirect) status code can be used instead.
The 302 (Found) status code indicates that the target resource resides temporarily under a different URI. Since the redirection might be altered on occasion, the client ought to continue to use the effective request URI for future requests. [. ]
Note: For historical reasons, a user agent MAY change the request method from POST to GET for the subsequent request. If this behavior is undesired, the 307 (Temporary Redirect) status code can be used instead.
The 307 (Temporary Redirect) status code indicates that the target resource resides temporarily under a different URI and the user agent MUST NOT change the request method if it performs an automatic redirection to that URI. Since the redirection can change over time, the client ought to continue using the original effective request URI for future requests. [. ]
The need for 308
The 308 status code is now defined by the RFC 7538 (that obsoleted the RFC 7238).
The 308 (Permanent Redirect) status code indicates that the target resource has been assigned a new permanent URI and any future references to this resource ought to use one of the enclosed URIs. Clients with link editing capabilities ought to automatically re-link references to the effective request URI to one or more of the new references sent by the server, where possible. [. ]
Se we have the following:
Choosing the most suitable status code
Michael Kropat put together a set of decision charts that helps to determine the best status code for each situation. See the following for 2xx and 3xx status codes:
Безопасно ли использовать HTTP-статус 308 Permanent Redirect?
Безопасно ли использовать HTTP-код состояния 308 Permanent Redirect ( предложение ) в ответах сервера? Проблема с 301 Moved Permanently заключается в том, что он работает только с GET-запросами (если быть честным: POST преобразуется в GET, что НЕ является опцией).
Код статуса очень новый во «времени RFC», так что бы вы предложили?
Что бы сделал браузер, если бы не знал 308? Будет ли он найти место и сделать 302?
Хотя 308 теперь является стандартом ( https://tools.ietf.org/html/rfc7538 ), в настоящее время он не является безопасным [Изменить] (по состоянию на 3 апреля 2019 года), особенно для настольных приложений, но в некоторых случаях он может быть почти безопасным. конкретные регионы (например, Индия) или для приложений, предназначенных для планшетов и мобильных устройств.
Отсутствие безопасности связано с тем, что IE 11 в Windows 7 и 8.1 не поддерживает его. В IE 11 сайт просто зависает. К счастью, IE, который поставляется с Windows 10, поддерживает его, так что это будет всего лишь случай ожидания, пока общий многолюдный переход от Windows 7 (Win 7 только превзошел Win 10 в глобальной статистике использования, Win 8 значительно менее популярны, чем оба) [Изменить] или ваша компания принимает решение больше не поддерживать его (что можно привести в качестве веского аргумента для 14 января 2020 года, когда Windows 7 теряет даже долгосрочную поддержку ).
Все остальные современные браузеры поддерживают его (Chrome, Firefox, Safari, Edge, Opera).
[Изменить] Статистика использования за март 2019 года, чтобы помочь принять ваше решение:
Таким образом, решение об использовании 308 могло бы повлиять (вероятно, на мои предположения, основанные на приведенной выше статистике) от 5 до 9% пользователей настольных компьютеров на момент этого редактирования (3/4/2019). Если ваше приложение больше ориентировано на планшеты / мобильные устройства, это значение будет значительно ниже. Точно так же, если ваше приложение специально для индийского рынка.
Что такое редиректы, и как их настроить
Слово «редирект» знакомо каждому, кто хоть немного интересуется тематикой SEO. В данном посте я подниму эту распространённую тему и подробно расскажу о редиректах, их видах, а также о способах проверки на ошибки.
1. Что такое редиректы, и какие они бывают?
Редирект или перенаправление — это способ переадресации посетителей со страницы на другие URL-адреса или ресурсы. В основном переадресация происходит на стороне сервера, то есть, когда сервер отдаёт 3xx коды ответа сервера при запросе определённого URL, на котором стоит переадресация.
Чаще всего используются такие редиректы:
2. Когда и почему стоит использовать редиректы?
Редиректы используются для корректного перенаправления в случаях перемещения контента. Они играют важную роль во взаимодействии посетителей и поисковых систем с сайтом, так как помогают избежать появления 404 ошибки в первом случае и сообщают о том, что контент переместился, во втором.
Существуют и другие ситуации, когда необходимо применить редирект:
3. Рекомендации по настройке редиректов
При настройке серверного редиректа рекомендую ознакомиться с правилами, которые помогут избежать ошибок внутренней оптимизации и понижения позиций сайта со стороны поисковых систем.
4. Как настроить редирект
Существуют разные способы настройки переадресации, такие как плагины для CMS и встроенные в них инструменты. Я расскажу о самых распространённых.
.htaccess — файл в Apache HTTP Server. Хранится в корневой директории сайта.
Для переадресации с одного домена на другой пропишите внутри файла директиву:
где example.com — новый домен сайта.
Для перенаправления со страницы на страницу:
Для склеивания зеркал (с домена с www на домен без www):
С домена без www на домен с www:
[NC] — сопоставление без учета регистра.
4.2. В файле web.config веб-сервера IIS
Чтобы настроить редирект с одной страницы на другую, пропишите такие директивы:
Директивы для настройки редиректа с домена на домен будут выглядеть следующим образом:
Обратите внимание, что во всех случаях используется редирект на постоянной основе 301 Moved Permanently.
Для генерации кодов редиректов существуют специальные сервисы, которые помогают значительно сэкономить время: 301 Redirect Code Generator, Seomagnifier, 301 Redirect Code Generator Tool.
5. Как проверить редиректы
Проверять, правильно ли выставлены редиректы, и искать связанные с ними ошибки я буду в краулере Netpeak Spider. Алгоритм действий следующий:
Подводим итоги
Редирект — полезный и важный инструмент, который понадобится в случаях:
Редирект помогает передать ссылочной вес страниц и сообщает поисковым системам, переместился ли контент страницы временно или навсегда, тем самым указывая им, как нужно сканировать страницу.
Во избежание проблем с оптимизацией сайта при настройке редиректа необходимо придерживаться важных правил:
Ознакомиться со всеми редиректами на своём сайте и найти самые критичные ошибки вы можете с помощью краулера, например Netpeak Spider.
Расскажите о своём опыте настройки редиректов, и какие проблемы они помогли вам решить?























