Node.js перенаправления
Чтобы перенаправить с помощью Node, во-первых, нужно включить HTTP модуль и создать новый сервер, используя .writeHead () метод:
var http = require(“http”);
http.createServer(function(req, res) {
res.writeHead(301,{Location: ‘http://new-website.com’});
res.end();
}).listen(8888);
Если Вы делаете новый файл и называете его index.js, вставьте код, приведенный выше, и запустите node index.js, в командной строке вы найдете локальную версию сайта, перенаправленную на new-website.com. Но, чтобы перенаправить все сообщения в разделе /blog, нужно разобрать URL из запроса с удобным Node URL модулем:
Бесплатные вебинары по схожей тематике:
Как стать UI/UX дизайнером
Игорь Резниченко
Удаленная разработка программного обеспечения
Александр Нечай
UX дизайн и архитектура.
Влад Шевченко
var http = require(“http”);
var url = require(“url”);
http.createServer(function(req, res) {
var pathname = url.parse(req.url).pathname;
res.writeHead(301,{Location: ‘http://new-website.com/’ + pathname});
res.end();
}).listen(8888);
Используя функцию .writeHead (), мы можем установит путь от запроса до конца URL строки. Теперь пользователь будет перенаправлен на тот же путь на новом сайте.
Немного полезных ссылок
Список всех уникальных отчетов об Open Redirect Reports на HackerOne, которые я смог найти на первых 20 страницах результатов Google.
- Open Redirect on Shopify
- Open Redirect on Nextcloud
- Open Redirect on Twitter
- Open Redirect on Shopify
- Open Redirect on WordPress
- Open Redirect and XSS on Twitter
- Open Redirect on HackerOne
- Interstitial redirect bypass / Open Redirect on HackerOne Zendesk Session
- Open Redirect on Mail.Ru
- Open Redirect on ExpressionEngine
- Open Redirect on HackerOne
- Open Redirect & Information Disclosure on HackerOne
- Open Redirect via Host Header
- Open Redirect on Uber
- Open Redirect on Uber
- Open Redirect Filter bypass on HackerOne
- Open Redirect bypass on New Relic
- Open Redirect bypass using svg on Slack
- Open Redirect via window.opener on Open-Xchange
- Open Redirect to RCE on Google Hangouts Electron app & RCE Tweet
С HTTP на HTTPS (другой порт)
Пример конфигурации для перенаправления запросов на другой порт — с 80 (http) на 443 (https):
server {
listen 80;
server_name domain.ru www.domain.ru;
return 301 https://$host$request_uri;
}
* в данном примере для всех обращений к сайту domain.ru по 80 порту (http) будет работать редирект на 443 порт (https) с кодом 301 (для склеивания доменов).
Также мы можем добавить условие, чтобы не перенаправлять на https для определенных ссылок, например:
server {
listen 80;
server_name domain.ru www.domain.ru;
if ($uri !~ /page.html){
return 301 https://$host$request_uri;
}
}
* в данном примере запрос на страницу /page.html будет открыт по http.
Есть еще способ настройки директивы server сразу для http и https. При этом, если зайти по 80 порты, нас перекинет на 443:
server {
listen 80;
listen 443 ssl;
server_name domain.ru www.domain.ru;
if ($scheme = ‘http’) {
return 301 https://$host$request_uri;
}
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/cert.key;
…
}
* данный способ удобен, чтобы не создавать несколько секций server со своими настройками.
Способ 5. Javascript-редирект с задержкой.
Этот вариант больше подходит если нужно сначала выполнить какой-то Javascript-код (например Метрики и т.п.) — а потом редиректить.
Не слишком надёжный способ выполнения задержки, т.к. у всех на компьютерах скорость выполнения Javascript может быть разной, но это лучше чем ничего. Т.е. можно рядом поставить код метрики и к примеру задержку в 300 миллисекунд — код Метрики скорее всего успеет выполниться и потом будет редирект.
Таким образом, можно пробовать использовать и этот редирект для учёта достижения целей в метрике например и др.
<script > <!— setTimeout (‘window.location = «//leonov-do.ru/»;’, 300); //—> </script> |
В данном случае код сработает через 300 миллисекунд (1000 = 1 секунда). Не очень удобно может быть и для посетителя, но если нужен учёт метрикой (и не используются цели на предыдущей страничке на клик по кнопке и т.п.) — это тоже вариант.
Переадресация на https через htaccess
Если ваш сайт уже проиндексирован то перед настройкой редиректа вам нужно произвести склейку зеркал, а потом уже настраивать редирект. Это поможет минимизировать потери трафика и позиций . О том как это сделать написано тут.
Для того, что бы настроить редирект с http на https, вам нужно, при помощи программы Notepad++, в корне вашего сайта открыть файл .htaccess, и далее, в самом начале этого файла, прописать один из нескольких вариантов перенаправления.
Как пользоваться Notepad++ и настроить для него FTP-подключение я рассказывала в одной из прошлых статей, с которой вы можете ознакомиться по этой ссылке:
Все дело в том, что настройки хостинга могут быть разные. Поэтому какого-то универсального синтаксиса для написание перенаправления нет и нужно будет пробовать разные варианты, что бы найти тот, который сработает на вашем хостинге.
Если вы не хотите экспериментировать с различными способами перенаправления, то лучше всего будет обратиться в техподдержку вашего хостинга и уточнить у них, как лучше всего настроить редирект с HTTP на HTTPS именно для вашего хостинга.
Плагин Redirection для обладателей сайта на CMS WorPress
Прекрасное решение для детектирования 404 ошибки.Один из самых простых способов перенаправить url. Плагин Redirection — самый популярный менеджер перенаправления для WordPress. С его помощью вы можете легко управлять переадресацией url, отслеживать ошибки 404. Также этот плагин позволяет убирать / в конце url. Это поможет уменьшить количество ошибок и улучшить рейтинг Вашего проекта.
Redirection — позволяет создавать и управлять перенаправлениями
Создает редирект быстро и легко, не требуя знаний Apache или Nginx. Если ваш сайт на WordPress поддерживает постоянные ссылки!!!! Тогда Вы с уверенностью можете использовать этот плагин для перенаправления любого URL-адреса своего сайта. В плагине осуществлена полная поддержка регулярных выражений, поэтому Вы можете создавать шаблоны Permanent Redirect с любым кол-вом URL-адресов.
Можно настроить плагин и для контроля над вашим контентом. Когда произойдет изменение поста или страницы, плагин автоматически создаст нужную переадресацию на новый URL-адрес. В дополнение к обычному редиректу URL-адресов. У Вас есть возможность перенаправить URL на основе других условий:
- Статус входа — redirect, только если пользователь вошел или вышел из системы.
- Браузер — redirect, если пользователь использует определенный браузер.
- Referrer — redirect, если пользователь посетил ссылку с другой страницы.
- Cookies — redirect, если установлены определенные cookie.
- HTTP headers — redirect, на основе HTTP-заголовка.
- Custom filter — redirect, на основе собственного фильтра WordPress.
Позволяет также отслеживать все ошибки 404, которые происходят на вашем сайте.
Redirection имеет поддержку APACHE & AMP & NGINX
По умолчанию этот плагин будет управлять всеми редиректами с помощью WordPress. Однако его можно настроить так, чтобы все Redirecty автоматически сохранялись в файле .htaccess и обрабатывались самим Apache. В случае если вы используете Nginx, вы можете экспортировать настройки в файл правил перезаписи Nginx. Плагин также имеет полнофункциональную систему импорта и экспорта:
- Импорт и экспорт в Apache и .htaccess;
- Экспорт в правила перезаписи Nginx;
- Копировать редирект между сайтами с помощью JSON;
- Импорт и экспорт в CSV для просмотра в табличном варианте;
- Используйте WP CLI для автоматизации.
Как настроить 301 редирект в файле .htaccess
Сам файл .htaccess располагается в главной директории сайта
Работа с ним ведется крайне осторожно, при любом изменении сохраняйте резервную копию. Одна ошибка в написании правила приведет к непредвиденной ошибке на сайте
Потом будет сложно установить причину банальной ошибки 500 (Internal Server Error). Само редактирование ведется с помощью любого текстового редактора, обязательно с поддержкой кодировки UTF -8 (формат преобразования Юникода).
Основная функция, которая указывает серверу на наличие правил перенаправления устанавливается первой.Все последующие правила пишутся после нее:
Options +FollowSymLinks RewriteEngine On
Redirect 301 непосредственно относящийся к доменному имени и сайту в целомК таким перенаправлениям можно отнести популярные редиректы:
- С WWW и обратно — для указания зеркала;
- Домена на домен или множества доменов на основной;
- С HTTPS на HTTP и обратно, для указания предпочтительной версии;
- Непосредственно полный перенос проекта на новый домен;
Это наиболее востребованные глобальные редиректы, которые относятся к доменному имени и сайту. Благодаря таким правилам все переходы и обозначения проходят плавно и безболезненно. Одна из самых востребованных для поискового продвижения. Распространенное перенаправление с домена www на без www. Необходимо для указания главного зеркала поисковым системам.
RewriteCond %{HTTP_HOST} ^www.site\.ru$ RewriteRule ^(.*)$ http://site.ru/$1
Пример обратного перенаправления:
RewriteCond %{HTTP_HOST} ^site\.ru$ RewriteRule ^(.*)$ http://www.site.ru/$1
Для тех, кто использует HTTPS:
RewriteCond %{SERVER_PORT} ^80$ RewriteCond %{HTTP} =on RewriteRule ^(.*)$ https://pixelplus.ru/$1
301 — редирект с домена на домен или на домен в зоне РФ.
Осуществляется перенаправление с одного доменного имени на другое.
RewriteCond %{HTTP_HOST} ^old-site\.ru$ RewriteRule ^(.*)$ http://www.site.ru/$1
Переход сайта на HTTPS для всех страниц сайта
Таким образом все существующие адреса проекта, будут направлены на новые с префиксом “https”.
RewriteCond %{SERVER_PORT} ^80$ RewriteCond %{HTTP} =on RewriteRule ^(.*)$ https://domain.ru/$1
Обратный переход на HTTP
Возможен если нужно перейти на http, хоть и редко используется.
RewriteCond %{HTTPS} "on" RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI}
Редирект со старого домена на новый домен, который включает полный путь и строку запроса
Options +FollowSymLinks RewriteEngine On RewriteRule ^(.*) http://www.newdomain.com%{REQUEST_URI}
Полный переезд сайта на новый домен
Классная вещь, которая крайне необходима для переезда сайта на новый домен.
RewriteCond %{REQUEST_FILENAME} robots.txt$ RewriteRule ^(+) $1 RewriteCond %{HTTP_HOST} ^site\.ru RewriteRule ^(.*)$ http://new-site.ru/$1 RewriteCond %{HTTP_HOST} ^www.site\.ru RewriteRule ^(.*)$ http://new-site.ru/$1
Редирект со старого домена на новый домен, который включает полный путь и строку запроса
Options +FollowSymLinks RewriteEngine On RewriteRule ^(.*) http://www.newdomain.com%{REQUEST_URI}
Наиболее известные коды редиректов
Наиболее часто применяются следующие коды редиректов:
1. 301 Moved Permanently. Данный код означает, что url адрес страницы изменен навсегда. Тот же пример с адресом «2222-11-11-11-11», вряд ли пользователь решит его вернуть.
2. 302 Found. Данный код означает, что такая страница найдена, но временно отображается по другому адресу. Этот редирект позволяет сохранять позиции исходного адреса страницы в поисковых системах.
3. 307 Temporary Redirect. По сути, аналогичен 302 коду, однако не позволяет изменять метод запроса (GET/POST). В виду того, что такое редко требуется, чаще применяется 302 код.
Существуют и иные коды, но они достаточно редко используются. Обычно, достаточно 301 и 302 кодов.
Что такое 301 Permanent Redirect и код состояния HTTP 301?
Permanent Redirect 301 — это стандартное обозначение того, что страница или ресурс перемещены на новое местоположение. Таким образом пользователь при посещении одной страницы, перенаправляется на адрес нового ее местонахождения.
Поисковый бот или прочие сторонние боты, получают соответствующий код ответа HTTP 301. Это означает, что страница или полноценный ресурс перемещены навсегда на новый адрес. Соответственно все основные свойства страницы переходят к конечной точке перенаправления. Указывая поисковым системам на необходимость пересмотра всех текущих входящий URL. Для последующего переноса веса на конечную страницу (ресурс).
Каков эффект использования 301 редиректа:
Постоянное перенаправление 301 — это метод перенаправления, который соответствует правилам поисковой системы среди всех методов перенаправления. К другим методам перенаправления относятся временное перенаправление 302, JS-переход и т. д. Эти методы могут привести к неправильным URL-адресам.
Поэтому, если у вас есть несколько доменных имен и вы хотите разрешить им посещать один и тот же веб-сайт, вы можете использовать только одно из них в качестве основного доменного имени, а оставшиеся другие доменные имена выполняют постоянное перенаправление 301 на это основное доменное имя. Если различные доменные имена посещают один сайт и повторного включения правильного редиректа не будет, это приведет к наказанию сайта.
Зачем нужен редирект?
Одни из самых основных ситуаций, где применяется редирект:
1. Перенос сайта с одного домена на другой. Этот редирект необходим, чтобы поисковые системы корректно восприняли переезд сайта.
2. Перенос страниц. Аналогично тому, как было в примере с адресом «2222-11-11-11-11».
3. Исправление некорректных страниц. Представьте себе ситуацию, что пользователь указал некорректный адрес страницы где-то в другом сайте и у вас нет возможности как-либо ее подкорректировать. В таком случае, остается только добавить редирект.
4. Для защиты от взлома. Адресное поле браузера это огромное поприще для злоумышленников. Поэтому периодически redirect добавляют для защиты от взлома.
5. Копии страниц. Порой, бывает так, что одна и та же страница доступна по нескольким разным адресам. Это негативно сказывается на сео оптимизации, так как информация дублируется. Чтобы исправить такую проблему применяют редирект с неосновных адресов на основной.
Примечание: Так же может быть применен мета тег rel=»canonical».
6. Техническая необходимость. Например, добавление слэша в конец адреса.
Кстати, вот несколько самых часто используемых редиректов:
1. PHP редирект — перенаправление на другую страницу.
2. Редирект с http на https в htaccess. 7 вариантов.
3. 301 редирект с www и без www в htaccess.
Как настроить редирект на www (или без www)
Подобные перенаправления требуются для случаев, когда сайт доступен по вариантам nsite.ru и www.nsite.ru, в этом случае поисковики считают их дублями и могут либо самостоятельно выбрать один из вариантов в качестве главного зеркала, либо в поиске будут варианты с обоих доменов. В общем случае, это отрицательный фактор при ранжировании сайта.
Вариант попроще, для одного домена. Перенаправление производится с поддомена www.site.ru на site.ru:
Здесь появилась новая директива RewriteCond, которая задаёт условие, при котором должны срабатывать редиректы — правила RewriteRule. Условие, в данном случае, имя домена, соответствующее www.nsite.ru (в регулярных выражения символ точки означает «любой символ», поэтому его желательно экранировать с помощью обратного слеша).
Обратное перенаправление тоже выполнить очень просто:
Оба варианта рабочие, но у них есть маленький минус — для каждого нового конфига необходимо заменять домен nsite.ru на свой собственный. Нельзя ли сделать уникальный вариант? Легко!
Редирект с любого поддомена www:
Редирект на поддомен с www:
%{HTTP_HOST} — текущий домен
№1. Настройка 301 редиректа в .htaccess
Файл .htaccess — это дополнительный файл конфигурации, который используется при работе с веб-сервером Apache. Он позволяет настраивать сервер на уровне отдельных каталогов. Другими словами, те директивы, которые прописаны в .htaccess, относятся только к той папке, где он размещен (включая все вложенные в нее директории, кроме имеющих свой файл .htaccess). Главные директивы для 301 редиректа: Redirect, RedirectMatch и RewriteRule.
Настраивать 301 редирект надежнее всего через этот файл. Сделать это можно с помощью панели управления хостингом или FTP-клиента. Как правило, .htaccess находится в корневом каталоге сайта. Чтобы увидеть его, включите отображение скрытых файлов. Если объекта с таким расширением нет, создайте его, а затем откройте блокнотом.
Прежде чем приступить к настройке редиректа, ознакомьтесь со следующими рекомендациями:
- Записывайте условия в блоке IfModule, чтобы избежать ошибок выполнения.
- Включите механизм преобразований посредством команды RewriteEngine On перед тем, как прописывать правила.
- Используйте флаг , чтобы обозначить вид редиректа.
Далее мы рассмотрим варианты создания 301 перенаправления через .htaccess для самых распространенных ситуаций.
С одного домена на другой
Если вы перенесли сайт на другое доменное имя, но хотите сохранить трафик и позиции в выдаче, это поможет сделать 301 редирект. Впишите в файл .htaccess (в папке сайта на старом домене) код такого вида:
Это также актуально для перенаправления с доменов из других зон или написанных с опечатками. Разумеется, главное, чтобы они тоже принадлежали вам.
С «http» на «https»
Технически, доступ к одной и той же странице возможен и по HTTP-, и по HTTPS-протоколу. Если вы перешли на защищенный протокол и вам нужно настроить редирект с «http://» на «https://» для всего сайта, добавьте в .htaccess такие строки:
Если не сработало, попробуйте второй вариант:
Если и второй вариант не работает, попробуйте этот:
В случае, когда редирект на https требуется настроить для всех страниц сайта, кроме одной, можно воспользоваться строками (где page.php — это веб-страница, для которой редирект не нужен):
Если переадресация наоборот нужна лишь для одной веб-страницы, используйте предыдущую конструкцию, только вместо «!^» перед /page.php впишите знак «=».
С «www» на без «www»
Для поисковых систем сайты с префиксом www (www.домен.ru) и без него (домен.ru) формально являются разными ресурсами, поэтому индексировать их тоже будут отдельно. Чтобы их не сочли дублями, необходимо настроить перенаправление с одного на другой. Обычный сайт и его www-версия называются зеркалами, поскольку они содержат один и тот же контент, но доступны по разным адресам.
Если ваше главное зеркало — вариант без «www», то правильно будет настроить на него редирект с веб-сайта с «www». Для этого впишите в .htaccess строки:
Если нужна обратная переадресация, т. е. с обычного домена на www, используйте:
Постраничный редирект
Иногда бывает необходимо изменить URL-адрес страницы, при этом не потеряв ее вес (к примеру, при настройке SEO). В этом случае можно настроить 301 redirects для каждой отдельной веб-страницы (без параметров). Впишите в .htaccess код вида:
Этот редирект перенаправит пользователя со страницы mysite.com/page1/ на страницу mysite.com/page2/.
Как сделать редирект
Ниже разберём несколько ситуаций, в которых владельцы сайтов чаще всего используют опцию редиректа.
C http на https
Из-за повсеместного переезда на https необходимость в этом редиректе возникает у многих. Для настройки через файл htaccess или PHP нужно использовать следующий код:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI)
C или на www
Этот редирект также очень важен для SEO, ведь с точки зрения поисковых систем страницы с префиксом www и без него являются разными и, соответственно, дублями.
Для выполнения настройки рекомендуется использовать специальные программы для генерации кодов редиректа, коих в Интернете существует множество, и сделать её через файл htacess.
Настройка перенаправления с одной страницы
Для выполнения этой операции действия нужно осуществлять по похожей схеме. Сначала сгенерировать код, после чего добавить его в файл htaccess или index.php. Если сайт работает на WordPress, можно воспользоваться плагинами, например, Simple 301 Redirects или Redirect.
Настройка редиректа при смене домена
В этом случае схема будет похожей, только в программах для генерации кода нужно получить постраничный редирект. Для этого потребуется ввести URL старого и нового сайта, а затем отметь нужные поля. Далее код также нужно добавить в файлhtacess или PHP.
Редирект папки
Можно задать и редирект для всей папки, то есть каталога. Это нужно, например, при создании подразделов, в том случае, если они отображаются в адресе страницы. Например, в раздел томаты на огородном сайте, имеющий ссылку примерного вида gardensampleblog.ru/tomaty/zheltye добавляется новый раздел «Томаты Черри», а ссылка получает следующий вид https://gardensampleblog.ru/cherry/zheltye.
Стандартный код для файла htacess в этом случае будет выглядеть следующим образом:
RedirectMatch 301 ^/tomaty/(.*)$ /cherry/$1
Типы редиректов
Рассмотренные выше виды различаются по своему функционалу. Однако, существует и второй фактор, отличающий один от другого. Это техническое исполнение редиректа. По нему можно выделить следующие варианты.
Htaccess-редирект
Htaccess — этот системный файл, который принадлежит к корневой структуре сайта. Чтобы получить к нему доступ необходимо зайти в панель управления хостинга, на котором размещен нужный веб-ресурс. Для настройки любого вида необходимо разместить в нём строку с соответствующим кодом.
PHP-редиректы
Отличается от вышеописанного тем, что находится на уровне сервера. Однако процесс будет схожим. Необходимо найти в корневой папке сайта PHP-файл и вписать в него строку кода для соответствующего редиректа.
Она работает медленнее, чем htacces. Однако, если страниц для которых нужно настроить редирект, много и сделать это нужно выборочно, а не для всех подряд, именно PHP может стать оптимальным вариантом.
Маркетинговые продукты Calltouch
Сквозная аналитика
Все данные в одном интерфейсе
Коллтрекинг
Определение источника звонков
Предикт
Речевая аналитика
Calltouch Лидс
Платформа для увеличения продаж
Обратный звонок
Виджет звонка с сайта
Онлайн-чат
Общайтесь с клиентами так, как им удобно
JavaScript-редирект
Этот тип отличается от предыдущих тем, что перенаправление осуществляется на стороне браузера, а не на стороне сервера. Соответственно, скорость переадресации резко снижается, так как скрипту необходимо полностью загрузиться для выполнения необходимых действий.
Важный минус такого способа: он не работает, если в браузере отключен JavaScript, что сегодня делают многие пользователи.
Основной сценарий применения JavaScript – пользователя нужно перенаправить на нужную страницу, но не сразу, а с задержкой. Например, при переезде на новый сайт его используют, чтобы вывести на экран сообщение типа «сейчас вы будете автоматически переадресованы на наш новый сайт».
Редирект необходимо настраивать к исходном коде страницы, с которой осуществляется перенаправление, изменив его текст между тегами <head>-</head>.
HTML-редирект
Это также медленный тип, так как он работает в браузере, а не на сервере. Для его настройки в исходный код страницы, с которой выполняется переадресация, нужно добавить метатег refresh.
В большинстве случаев серверные редиректы предпочтительнее браузерных, так как они обладают более высокой скоростью загрузки и не зависят от настроек на стороне пользователя.
Проверка корректности настроек 301 редиректа
Самый простой способ проверки переадресации – ручное тестирование. Для этого необходимо вставить в адресную строку браузера url сайта или страницы, с которой настроено перенаправление. Если при открытии будет доступен ресурс, на который настроен редирект, то переадресация выполняется правильно.
Для автоматической проверки можно воспользоваться специальными сервисами:
-
Redirect Checker, bertal.ru или Header Checker Tool для тестирования отдельных страниц;
-
программой Screaming Frog Seo Spider, способной просканировать весь сайт.
Существует ряд ошибок, которые следует избегать при настройке редирект 301:
-
использование перенаправлений между страницами сайта без изменения их url в ссылках;
-
установка временной переадресации вместо постоянной;
-
неправильный выбор типа редиректа;
-
перенаправление файла robots.txt;
-
непонимание разницы между rel=canonical и кодом 301;
-
редирект на нерелевантный контент;
-
переадресация, которая не приводит к 200-й странице.
Стоит отметить проблему создания цепочки ссылок, которая может привести к появлению циклического редиректа — ошибки с кодом «ERR_TOO_MANY_REDIRECTS». Наиболее распространенные причины возникновения такого бага – неправильная настройка в процессе создания переадресации, вирусная атака, слишком длинная цепочка редиректов. Не рекомендуется настраивать редирект, содержащий более пяти адресов. Оптимальной является прямая переадресация со старого на новый url.