Перенаправление URL-адресов


Оглавление (нажмите, чтобы открыть):

URL.Partners

Как сделать редирект партнерской ссылки. Все способы маскировки ссылок от ботов

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

Какой способ маскировки ссылок использовать в каждом конкретном случае, зависит от сайта, с которого вы планируете получать трафик. Если на некоторых сайтах достаточно просто сократить smartlink через любой популярный сократитель (например, bit.ly), то на других ресурсах такие профили быстро уходят в бан. Поэтому для вебмастеров всегда актуален вопрос, как спрятать свою партнерскую ссылку от ботов.

Например, в Facebook и Instagram используются схожие технологии отслеживания спама. Из-за того, что эти соцсети постоянно подвергаются спам-атакам, алгоритмы стали умнее, и очень часто у вебмастеров возникают проблемы именно с размещением ссылок.

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

Способ №1. Использование сократителей (bit.ly, vk.cc и других)

У ссылок, сокращенных через популярные сервисы, кликабельность будет меньше. Их не любят соцсети, а для пользователей они выглядят подозрительно. Таким способом можно преобразовать smartlink в более удобный вид, но не скрыть его от ботов.

Способ №2. Редирект партнерской ссылки через свой домен

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

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

Домены

Для работы с англоязычными сайтами подойдут любые домены, кроме кириллических и относящихся к СНГ. Отличный вариант – новые (тематические) доменные зоны, например, .space, .club, .life, .site. На них действуют большие скидки, по которым можно регистрировать домены в Reg.ru.

Настройка редиректа

Самый простой и универсальный код мгновенного редиректа, который будет работать на любом хостинге с PHP:

Чтобы сделать редирект, в корне сайта или поддомена удаляется созданная по умолчанию страница index.html и создается скрипт index.php. В этот скрипт копируем данный код и заменяем YourSmartlink на свою ссылку, которую вы получили в личном кабинете Url.Partners.

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

Если на сайте есть предустановленная CMS, например, WordPress, файл .htaccess будет в его корневой папке и для создания редиректа достаточно просто отредактировать его.

На чистом домене, на котором не установлено CMS, необходимо поместить файл .htaccess в корневую директорию сайта public-html. Этот файл можно создать в любом текстовом редакторе, прописать нужные директивы и сохранить без расширения, выбрав тип «Все файлы».

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

Сделать редирект можно и без хостинга, заказав услугу перенаправления домена у своего регистратора. Обычно эта услуга платная (от 120 руб.).

Есть еще один вариант маскировки партнерской ссылки на своем домене – размещение в iframe-коде. В этом случае редирект будет незаметным. Способ используется при прохождении модерации в некоторых рекламных сетях.

АйТи бубен

Инструменты пользователя

Инструменты сайта

Содержание

URL redirection

Слово редирект применяется в значениях:

Перенаправление HTTP запросов на HTTPS

Apache

Если вы хотите запретить использование HTTP, то самым разумным будет перенаправлять все HTTP запросы к страницам на их HTTPS адрес. Чтобы добиться этого в Apache можно, например, организовать перенаправление с помощью mod_rewrite. Для этого сначала необходимо его активировать:

Затем изменить файл /etc/apache2/sites-enabled/000-default, отвечающий за виртуальный хост по умолчанию для HTTP запросов. В этот файл надо добавить внутрь блока

При этом все настройки директорий можно удалить, поскольку по HTTP на ваши сайты всё равно будет не попасть. Всё, теперь ещё раз перезапустите Apache и убедитесь, что при заходе по HTTP вы автоматически перенаправляетесь на HTTPS страницу.

Nginx

Перенаправление HTTP запросов на HTTPS в nginx делается так:

301 редирект: с WWW на без WWW и наоборот

Если все работает в Server Response должен прийти ответ(заголовок) Методы и структура протокола HTTP

на запрос домена с www.

Apache глобальное перенаправление (редирект)

При запросе страниц из каталогов company и forum будет произведено перенаправление на новые адреса.

HTML редирект или метаредирект

Мета-тег с редиректом прописывается в секции . Параметр content=»» со значением 1 определяет перенаправление через 1 секунду и т.п. После URL = вводится адрес перенаправления с текущей страницы.

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

Помощь

Редирект с одного URL (адреса сайта) на другой

Apache

Следующие директивы могут быть прописаны как в конфигурационном файле веб-сервера, так и в файле .htaccess

Для перенаправления запросов с определенной страницы сайта на другой URL допишите в файл директиву

Если страниц несколько, то для каждой нужно создавать новую директиву. Для перенаправления всех приходящих на веб-сервер запросов на другой URL допишите строку

Перезапустите веб-сервер Apache командой


Nginx

В конфигурационном файле веб-сервера создайте следующую секцию:

При запросе на веб-сервер по адресу my-old-website.com будет выполнен редирект на другой адрес — my-new-website.com

Выполните перезагрузку веб-сервера Nginx командой:

linux-notes.org

Перенаправление домена без изменения URL

В этой статье «Перенаправление домена без изменения URL» я приведу несколько способов перенаправить ваш сайта на другой адрес, не меняя домен.

Пример 1: Перенаправление с удержанием всего что после URL-а:

Первый вариант будет показать все содержимое одного URL-а и передавать параметры в другой. Например, если вы только что изменили свой домен на Domain_name_B.org, но вы все еще имеете много посетителей которые помнят, используют ( нравится) домен Domain_name_A.org, то вы должны использовать данное перенаправление (которое внизу).

Apache.

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

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

Что делает редирект что выше?

После добавления этой строки в файл .htaccess, вы сможете перейти к Domain_name_A.org/My_page и он будет перенаправлен на Domain_name_B.org/My_page

Nginx.

Так же редирект, но на nginx будет выглядеть следующим образом:

Добавляем его в Ваш хост, например:

И заменяем Domain_name_A.org и Domain_name_B.org на соответствующие домены (URL-ы).

Пример 2: Перенаправление домена на определенный URL

Apache.

Существует еще один способ сделать ваш перенаправление, чтобы показать определенный URL, но сохранить домен же, как хорошо. Если вы хотите, чтобы посетители, чтобы перейти к DomainA.com с определенной страницы в виду, когда делает это так, вы можете использовать этот код:

Вы должны использовать этот метод, если, например, вы используете поддомен и ходите сделать перенаправление в конкретную папку или у Вас есть отдельный блок ( например покупка-продажа).

Nginx.

Так же редирект, но на nginx будет выглядеть следующим образом:

Добавляем его в Ваш хост, например:

И заменяем Domain_name_A.org и Domain_name_B.org на соответствующие домены (URL-ы) и путь к нужному редиректу (папку).

Пример 3: Перенаправление IP адреса на URL

Apache.

Иногда, необходимо направить IP адрес к конкретному URL. Следующий код показывает, как это может быть сделано в файле .htaccess.

Перенаправление IP-адреса (нужно заменить XX Ваш на IP-адрес) на указанный домен (URL) http://domain_name.org:

Nginx.

Так же редирект, но на nginx будет выглядеть следующим образом:

Добавляем его в Ваш хост, например:

И заменяем Domain_name.org на соответствующие домен (URL) и, ХХ — на Ваш IP.

Внимание: При использовании первого варианта, поисковые системы, такие как Google или Bing увидите несколько сайтов с одинаковым содержанием и может привести к падению Вашего рейтинга (ранга) в одном или обоих сайтов. С точки зрения SEO, лучшим вариантом является создание 301 перенаправляет вместо этого.

По этому, будьте предельно осторожны с перенаправлениями!

Моя тема «Перенаправление домена без изменения URL» завершена.

Переадресация веб страниц

Введение

Переадресация – когда веб-страница побывала на определенном URL, а потом меняет его на другой URL. Если пользователь посетил «website.com/page-a» и произошло перенаправлен ие на «website.com/page-b». Переадресация пригодится Вам, если Вы хотите перенаправить страницу на новое место, изменить URL-структуру сайта, удалить «WWW» из URL или даже полностью перенаправить страницу на другой сайт.

К примеру, Вы только что перешли на новый сайт и хотите закрыть старый. Но Вам не нужно, чтобы страницы старого сайта имели статус 404 Not Found. Старые ссылки должны перенаправлять пользователя на Ваш новый сайт.

Пример: мы хотим old-website.com/blog/post перенаправить на new-website.com/blog/post, а также мы хотим перенаправить все другие страницы, использующие данный URL. Также необходимо, чтобы поисковые системы понимали, что эти изменения постоянны и обновлялись соответственно. Как же это сделать? Для начала нужно узнать немного про HTTP.

Коды ответов HTTP

Каждый раз, когда Вы заходите на URL или отправляете запрос из браузера, используется п ротокол передачи гипертекста (HTTP). Это процесс, посредством которого мы запрашиваем данные, как CSS, HTML и изображения, хранящиеся на сервере. После того, как послан запрос, эти данные отвечают кодом HTTP 200 OK, означающий, что они доступны. Есть много различных видов кода ответа, самый известный – 404 Not Found; веб-страницы, а также любой другой запрашиваемый контент, например, изображения могут отвечают статусом 404.

Каждый HTTP ответ имеет определенный трехзначный номер, 404 Not Found – статусный код 4XX, указывающий ошибку клиента; 200 относится к категории 2XX и показывает, что сообщение успешно. Нас интересуют ответы HTTP-категории 3ХХ, как 301 Moved Permanently или 302 Found. Эти коды статуса специально отведены для переадресации.

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

HTML перенаправления

Один из самых простых способов перенаправления – мета-тег refresh. Можно разместить этот мета-тег внутри тега

в верхней части страницы HTML:


meta http — equiv =” refresh ” content =”0”; url =’ http :// new — website . com ’ />

Атрибут content – атрибут задержки перед перенаправлением браузера на новую страницу, он установлен на 0 секунд. Не нужно устанавливать код состояния HTTP, но важно перепроверить написание кавычек выше (есть вложенные кавычки, поэтому лучше использовать разные типы кавычек).

Хотя этот метод самый простой для перенаправления веб-страницы, у него есть недостатки. В соответствии с W3C некоторые браузеры не воспринимают мета-тег refresh. Пользователи могут увидеть страницу А, которая загрузится раньше, чем Вы будете перенаправлены на страницу В. Также она отключает кнопку назад на старых браузерах. Поэтому этот метод не рекомендуется использовать вообще.

Лучший вариант – перенаправление сайта с JavaScript.

Перенаправления JavaScript

Перенаправить на другой URL с JavaScript довольно легко, просто требуется изменить location window- объекта :

window.location = “http: //new-website.com”;

В JavaScript есть много возможностей для этого:

window.location = “http: //new-website.com”;

window.location.href = “http: //new-website.com”;

Также можно просто использовать location с нужным объектом окна. И self или top.

С location объекта можно также перезагрузить страницу или изменить путь и начало URL.

Здесь присутствует несколько проблем:

  1. JavaScript должен быть включен и загружен.
  2. Пока не ясно, как поисковые системы реагируют на это.
  3. Нет кодов состояния, поэтому Вы не можете полагаться на информацию о перенаправлении.

Требуется решение на сервере, чтобы помочь нам, отправив ответ 301 в поисковые системы и браузеры.

Перенаправления Apache

Возможно, самый удобный способ перенаправления – добавление определенных правил в файл `.htaccess` на веб-сервере Apache.

`.htaccess` – документ, дающий нам возможность отдавать команды Apache, программному обеспечению, работающему на сервере. Чтобы перенаправить пользователей, нужно создать новый (или отредактировать существующий) файл .htaccess и добавить его в корневой каталог старого сайта. Мы будем добавлять данное правило:

Redirect 301 / http: //www.new-website.com

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

Этот вид переадресации работает только на серверах Linux с включенным mod_rewrite, модулем Apache, позволяющим нам перенаправить запрашиваемые URL-адреса на сервере, если определенный образец найден, он будет изменять запрос некоторым способом. Большинство хостинг-компаний поддерживают это по умолчанию.

Вернемся к нашему примеру, если использовать код, приведенный выше, то пользователь перейдет к «old-website.com/blog/post» и будет перенаправлен по адресу «new-website.com». Неудобно то, что пользователи не видят реальную запрашиваемую страницу. Поэтому добавим следующее правило для нашего `.htaccess` файла, чтобы перенаправить все сообщения блога на нужную страницу:

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

По ошибке пользователи могут быть перенаправлены на страницу 404:

IfModule mod _ rewrite . c >

RewriteRule .* 404.html [L]

Сначала нужно проверить, доступен ли модуль mod_rewrite и включить его. В случае, когда файл или каталог не найден, пользователь попадет на нашу страницу 404. Он увидит содержимое страницы 404.html файла в то время, как запрашиваемый URL останется тем же.

Как настроить редирект и замену партнёрских ссылок на WordPress

Время прочтения: 9 мин.

Партнёрские ссылки – это один из самых эффективных инструментов для продажи авиабилетов, отелей, туров и других туристических услуг с тревел-блога. Существует несколько решений для удобного управления большим количеством партнёрских ссылок на туристическом сайте. На этой странице мы рассмотрели вопрос, как настроить редирект партнёрских ссылок на самой популярной CMS для туристических сайтов – WordPress, а также рассказали подробнее о массовой замене ссылок.

Проблемы с партнёрскими ссылками

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

Кроме трудностей с обслуживанием ссылок, большое количество ссылок на внешние ресурсы может повлиять и на отношение поисковых систем к вашему проекту. Закрытие ссылок в тег частично решает проблему с поисковыми системами, но не упрощает обслуживание сотен ссылок с вашего сайта.

Решение проблем

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

При наличии инструмента для создания и управления ссылками вы сможете заменять целевую страницу в несколько кликов. В итоге, ссылка в вашей статье остается прежнего формата – yourdomain.ru/link1, а человек попадает уже не на aviasales.ru, а, например, на top100.aviasales.ru.

Существует несколько способов управления партнёрскими ссылками. Ниже мы собрали все основные, и подробно рассмотрели вопрос, как переадресовать ссылку на WordPress сайте.

Что такое редирект ссылок

Редирект – это метод перенаправления пользователя на другую страницу в сети. Например, кликая на ссылку формата: yourdomain.ru/link1, человек в итоге попадает на партнёрскую страницу, например, на aviasales.ru.

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

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

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

Эта процедура происходит автоматически и моментально.

301, 302, 307 редиректы

Существует 10 HTTP кодов для редиректов, но востребованы только три из них: 301, 302 и 307. Рассмотрим их главные особенности.

  • 301 – постоянный редирект, указывающий на то, что перенос осуществляется навсегда. Обычно под понятием «редирект» всего сайта (при переезде на новый домен) подразумевается этот код.
  • 302 – временный редирект, указывает на то, что перенос осуществлен временно. Этот вариант идеально подходит для организации редиректа партнёрских ссылок.
  • 307 – временный редирект. Применение кода не разрешает менять метод запроса (GET/POST). На практике в работе с партнёрскими ссылками 307 и 302 коды аналогичны.


Как сделать редирект ссылок

Новичкам сложно разобраться с редиректами и применять их на практике. Поэтому, рассмотрим основные способы, с помощью которых реализуется редирект.

Сокращалки ссылок

Сокращалки ссылок – самый простой способ, как перенаправить ссылку. Вам не нужно ничего настраивать и устанавливать, достаточно воспользоваться веб-версиями сервисов-сокращалок, например:

Все примеры выше – это простые сервисы для сокращения ссылок. Такой редирект не даёт вам свободы действий, но позволяет упаковать все ссылки в единый формат, а также узнать больше статистики.

HTML, JS и PHP скрипты

Редирект при помощи скриптов PHP создаеёт дополнительную нагрузку на сервер, но предпочтителен, когда речь идет о большом количестве страниц. Этот вид перенаправления работает на уровне сервера.

Редирект с использованием JavaScript работает на уровне браузера. Поскольку для срабатывания необходима полная загрузка в браузере, этот метод может быть медленнее PHP редиректа. Этот тип иногда используют для перенаправлений с задержкой. JS редирект не сработает, если в браузере у пользователя отключена функция JavaScript.

Перенаправление с помощью HTML кода аналогично JS и работает на уровне браузера, поэтому выполняется медленнее редиректов на уровне сервера.

WordPress плагины

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

Ниже мы рассмотрим подробнее каждый из методов редиректа и приведем актуальные примеры.

Популярные сервисы сокращения ссылок

  1. Goo.gl

Сервис сокращения ссылок от Google всегда был образцом качества и стабильности. Все необходимые действия совершаются в пару кликов. Интерфейс интуитивно понятный, простой, минималистичный. Для просмотра статистики необходимо авторизоваться. Пользователи могут узнать:

  • Количество переходов;
  • Упоминания ссылки в сети;
  • Подробную карту популярности в разных странах;
  • Платформы и браузеры, с которых чаще всего кликали по ссылке.

К сожалению, с 13 апреля 2020 года сервисом могут пользоваться только старые пользователи. А 30 марта 2020 года Google прекращает работу ресурса.

Bitly – один из лидирующих сервисов сокращения ссылок. Коротким ссылкам можно давать имена, просматривать детальную статистику при авторизации. Сервис бесплатный, но доступна и платная версия, существенно расширяющая функционал, где вам будет доступно:

  • Подробная аналитика;
  • Конструктор ссылок;
  • Гибкие корпоративные настройки;
  • Всесторонняя помощь технической поддержки и наличие индивидуального менеджера.
  1. Vk.cc

Далеко не все знают о существовании сервиса сокращения ссылок от социальной сети «Вконтакте». Он бесплатен и доступен только для зарегистрированных пользователей.

Присутствует минимальный набор статистики с возможностью экспорта в форматах .xls и .csv. Вся процедура сокращения требует вставку ссылки и нажатие одной кнопки.

Популярные плагины для WordPress

Разработанные плагины имеют аналогичный принцип работы, но предлагают разный дополнительный функционал, а также в итоге вы получаете короткую ссылку на своём домене. Плагины позволяют не только быстро настроить редирект ссылки на WordPress, но и удобно обслуживать ссылку в будущем. Например, заменить целевую страницу.

Shortlinks by Pretty Links

Shortlinks by Pretty Links – это многофункциональный плагин для управления ссылками на WordPress, успевший собрать 200 тысяч активных установок. Благодаря плагину «Shortlinks by Pretty Links» вы сможете из админки собственного сайта создавать ссылки на собственном домене с редиректом на целевые страницы, а также управлять ранее созданными ссылками. Для работы не требуется разбираться с кодом.

Основные возможности бесплатной версии:

  • Редирект: 301, 302, 307;
  • Распределение ссылок по категориям;
  • Наглядная статистика;
  • Экспорт данных в формате .csv;

Как установить

Вы можете скачать архив из официальной библиотеки, или же установить плагин через админку вашего сайта: https:// yourdomain.ru /wp-admin/plugin-install.php. Задайте в поиске название плагина, нажмите кнопку «Установить»:

После активации плагина, в меню управления появится новый блок:

Создание ссылок

Перейдите в раздел «Добавить ссылку», расположенный по адресу https://yourdomain.ru/wp-admin/admin.php?page=add-new-pretty-link. Перед вами откроется редактор. Здесь необходимо задать короткую ссылку и целевую страницу, например:

В поле Redirection (метод перенаправления) выбирайте базовый параметр – 302. Для сохранения ссылки кликайте по кнопке «Create» внизу страницы.

После этого вы можете использовать ссылку формата yourdomain.ru/avia в любом месте. При клике пользователь будет автоматически и моментально попадать на указанную вами страницу, в нашем примере, это https://www.aviasales.ru/search/MOW2409KLV1.

Управление ссылками

Все ссылки собраны на главной странице плагина. Здесь же вы видите базовую статистику – сколько кликов совершено:

При необходимости изменить целевую страницу, выбирайте интересующую вас ссылку и указывайте в открывшемся окне новый «Target URL». После этого прежняя ссылка будет вести на новую страницу, и вам не придется заменять ссылку на всём сайте.

На странице «Click» по адресу: https://yourdomain.ru/wp-admin/admin.php?page=pretty-link-clicks доступно больше информации о совершенных кликах.

Расширенные возможности

Всё, описанное выше – это возможности бесплатной версии. Существует платная версия плагина, которая называется Pretty Link Pro. В платной версии плагина доступно:

  • Авто-замена ссылок на сайте;
  • Автоматическая расстановка ссылок на заданные слова;
  • Редирект на основе страны, где находится пользователь;
  • Проведение A/B тестов;
  • И некоторые другие функции.


Стоимость платной лицензии на один сайт – 57 долларов в год. С купоном 10OFF цена снижается на 10%.

Easy Affiliate Links

Easy Affiliate Links – это альтернатива Shortlinks by Pretty Links. Плагин ориентирован на работу с партнёрской программой Amazon, но его можно использовать и для любых других ссылок. На сегодня более 10 000 человек используют Easy Affiliate Links для сокращения ссылок.

Главные особенности плагина:

  • Простой интерфейс;
  • Статистика;
  • Распределение ссылок по категориям;
  • Импорт и экспорт ссылок в .XML.

Также авторы предлагают палатные дополнения. Уже реализовано дополнение подробной статистики, в разработке находятся дополнения о специфике месторасположения кликов, A/B тестирование и отслеживание «сломанных» ссылок.

Shortlinks for Jetpack sharing buttons

Shortlinks for Jetpack sharing buttons – это плагин для редиректа на WordPress, который имеет полноценный функционал сокращения ссылок, но преимущественно используется как дополнение для плагина Jetpack, улучшая его возможности. Отслеживание статистики доступно через бесплатный плагин Google Analitycs by Yoast.

Разработчики отмечают, что Shortlinks for Jetpack все еще находится на этапе разработки, иногда могут возникать ошибки. Обычно они исправляются в кратчайшие сроки. Поскольку это проект с открытым исходным кодом, то проблемы обычно отправляются в GitHub.

ThirstyAffiliates Affiliate Link Manager

ThirstyAffiliates Affiliate Link Manager – качественный плагин, позиционирующий себя как удобный помощник для блогеров, которые зарабатывают через партнёрские программы. О популярности и качестве разработки говорит 20 тысяч активных загрузок и хороший рейтинг оценок. В своих отзывах пользователи отмечают сдедующие факты:

  • Простота использования с помощью визуального редактора;
  • Улучшенный опыт управления ссылками;
  • Безопасный редирект через 301, 302, 307 коды;
  • Добавление изображений к партнерским ссылкам;
  • Наличие статистики и отчетов.

Присутствуют платные лицензии (PRO версия) на один, пять или безлимитное количество сайтов.

Мастер Йода рекомендует:  Разработчики из JetBrains выпустили Cloud Tools для IntelliJ IDEA

Редирект ссылок через PHP скрипт и Javascript

Как мы уже отметили, PHP редиректы работают быстрее JS, поэтому более популярны среди вебмастеров. Для реализации простого перенаправления необходимо добавить в файл index.php следующий код:

Никакой панели управления в данном случае нет, все новые ссылки вносятся вручную в файл shortlinks.ini, который создаётся вручную. Внутри этого файла пишем, например:

В итоге вы получите ссылки формата: yourdomain.ru/index.php?l=aviasales.

Пример демонстрирует обычный редирект ссылки на WordPress при помощи PHP скрипта. Подробнее о том, как работает данный PHP скрипт читайте по этой ссылке.

Редирект через JavaScript задаётся кодом, размещаемым между тегами и на нужной странице. Для реализации этой задачи доступен плагин Per page add to head. Пример простого кода для редиректа на Javascript представлен ниже:

Учтите, что в WordPress при едином дизайне без сторонних плагинов встроить самостоятельный Javascript код между тегами и невозможно. Поэтому вам либо придётся создавать отдельный шаблон для каждой страницы, либо использовать дополнительный плагин для интеграции кода.

Лучшее решение для WordPress сайтов

Создать ссылку с редиректом – это лишь половина задачи. В будущем ссылку нужно ещё и обслуживать – следить за статистикой и менять целевые страницы. Готовые решения – выглядят лучше, чем простые PHP/JS скрипты, так как позволяют сделать больше с меньшими трудностями.

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

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

Универсальным решением является плагин Pretty Link в расширенной версии. Помимо редиректа, он позволяет в автоматическом режиме:

  • Заменить существующие ссылки на ссылки нового формата;
  • Расставить ссылки на словах, где ещё не было ссылок.

В этом плагине всё хорошо, кроме факта, что он платный. Из этой ситуации можно филигранно выйти, используя два плагина – бесплатную версию Pretty Link и бесплатный плагин для замены старых ссылок на сайте.

Как массово заменить старые ссылки на сайте

ВАЖНО: перед любыми действиями по массовой замене ссылок – всегда – создавайте резервную копию базы данных вашего сайта!

Плагин Better Search Replace поможет вам с автоматической заменой старых ссылок на новые, а также с расстановкой ссылок на слова. Сегодня плагин имеет свыше 500 тысяч активных установок. Среди основных возможностей:

  • Массовая замена старых ссылок;
  • Выбор отдельных таблиц для работы;
  • «Холостой» запуск для просмотра полей, которые будут обновлены.

С помощью плагина вы сможете обновить старые ссылки, или же разместить новые на нужных словах. Например, вы можете задать поиск по слову «авиабилеты» и в поле для замены указать:

У этого способа есть альтернативы. Вы можете использовать как аналогичные плагины, так и внести изменения в MySQL базу данных вашего WordPress сайта через панель управления хостингом. Ещё одна альтернатива – использовать PHP скрипт «Replace DB version 3.1.0», доступный по этой ссылке. Он работает не только с сайтами на WordPress, но и с другими популярными CMS.

При подготовке материала мы протестировали несколько популярных решений, среди которых был и плагин URL Shortener by MyThemeShop. Многообещающее описание плагина гласит, что вы бесплатно получите в одном флаконе инструмент для редиректа, управления и для массовой замены ссылок. Это решение могло стать отличной альтернативой платной версии Pretty Link Pro, но на деле плагин, к сожалению, не работает.

Нужно ли делать редирект партнёрских ссылок

Редирект ссылок стоит делать для удобного обслуживания собственного проекта. И чем более удобный инструмент вы выберите для обслуживания ссылок, тем эффективней будет ваша работа. Системы управления ссылками дают больше возможностей, чем ручное размещение. Например, вы в пару кликов можете провести A/B тест партнёрских программ по экскурсиям или турам, заменив целевую страницу.

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

Используя редирект, помните, что ссылка, направление которой пользователь не понимает, может вызывать негатив. Поэтому делайте понятные и красивые сокращения, а также, подводя пользователя к клику, сообщайте ему подробности, куда он попадёт.

Делитесь в комментариях вопросами, собственным опытом редиректа и обслуживания партнёрских ссылок на сайте.

ПО промежуточного слоя для переопределения URL-адресов в ASP.NET Core URL Rewriting Middleware in ASP.NET Core

Этот документ содержит вводные сведения о переопределении URL-адресов и инструкции по использованию ПО промежуточного слоя для переопределения URL-адресов в приложениях ASP.NET Core. This document introduces URL rewriting with instructions on how to use URL Rewriting Middleware in ASP.NET Core apps.

Переопределение URL-адресов представляет собой изменение URL-адресов запросов на основе одного или нескольких предопределенных правил. URL rewriting is the act of modifying request URLs based on one or more predefined rules. Переопределение URL-адресов создает абстракцию между расположениями ресурсов и их адресами, позволяя убрать тесную связь между ними. URL rewriting creates an abstraction between resource locations and their addresses so that the locations and addresses aren’t tightly linked. Существует несколько сценариев, где может пригодиться переопределение URL-адресов: URL rewriting is valuable in several scenarios to:

  • Временное или постоянное перемещение или замещение ресурсов сервера с сохранением стабильных указателей для этих ресурсов. Move or replace server resources temporarily or permanently and maintain stable locators for those resources.
  • Разделение обработки запросов между разными приложениями или разными областями одного приложения. Split request processing across different apps or across areas of one app.
  • Удаление, добавление или переупорядочение сегментов URL-адресов для входящих запросов. Remove, add, or reorganize URL segments on incoming requests.
  • Оптимизация общедоступных URL-адресов в целях оптимизации для поисковых систем (SEO). Optimize public URLs for Search Engine Optimization (SEO).
  • Разрешение использования понятных общедоступных URL-адресов, чтобы помочь посетителям прогнозировать содержимое, возвращаемое в результате запроса ресурса. Permit the use of friendly public URLs to help visitors predict the content returned by requesting a resource.
  • Перенаправление небезопасных запросов на защищенные конечные точки. Redirect insecure requests to secure endpoints.
  • Запрет вставки прямых ссылок, когда внешний сайт использует статический ресурс, размещенный на другом сайте, привязывая ресурс к своему содержимому. Prevent hotlinking, where an external site uses a hosted static asset on another site by linking the asset into its own content.

Переопределение URL-адресов может снижать производительность приложения. URL rewriting can reduce the performance of an app. Следует по возможности ограничить число и сложность правил. Where feasible, limit the number and complexity of rules.


Перенаправление и переопределение URL-адресов URL redirect and URL rewrite

Разница между перенаправлением и переопределением URL-адресов может показаться незначительной, но она оказывает существенное влияние на предоставление ресурсов клиентам. The difference in wording between URL redirect and URL rewrite is subtle but has important implications for providing resources to clients. ПО промежуточного слоя для переопределения URL-адресов в ASP.NET Core удовлетворяет потребность в обеих этих функциях. ASP.NET Core’s URL Rewriting Middleware is capable of meeting the need for both.

Перенаправление URL-адресов является операцией на стороне клиента, которая предписывает клиенту обратиться к ресурсу по другому адресу, отличному от запрошенного клиентом. A URL redirect involves a client-side operation, where the client is instructed to access a resource at a different address than the client originally requested. Для этого используется круговое обращение к серверу. This requires a round trip to the server. URL-адрес перенаправления, возвращаемый клиенту, отображается в адресной строке браузера, когда клиент отправляет новый запрос для данного ресурса. The redirect URL returned to the client appears in the browser’s address bar when the client makes a new request for the resource.

Если /resource перенаправляется на /different-resource , сервер отвечает, что клиенту следует получить ресурс в /different-resource с кодом состояния, указывающим, что такое перенаправление является временным или постоянным. If /resource is redirected to /different-resource , the server responds that the client should obtain the resource at /different-resource with a status code indicating that the redirect is either temporary or permanent.

При перенаправлении запросов на другой URL-адрес можно указать, является ли оно постоянным или временным, предоставив код состояния в ответе: When redirecting requests to a different URL, indicate whether the redirect is permanent or temporary by specifying the status code with the response:

Код состояния 301 (перемещен окончательно) используется, когда ресурс имеет новый постоянный URL-адрес и вы хотите сообщить клиенту, что все последующие запросы для этого ресурса должны использовать новый URL-адрес. The 301 — Moved Permanently status code is used where the resource has a new, permanent URL and you wish to instruct the client that all future requests for the resource should use the new URL. Клиент может кэшировать и повторно использовать отклик при получении кода состояния 301. The client may cache and reuse the response when a 301 status code is received.

Код состояния 302 (найдено) используется, когда перенаправление является временным или может меняться. The 302 — Found status code is used where the redirection is temporary or generally subject to change. Код состояния 302 указывает клиенту, что не нужно сохранять URL-адрес и использовать его в будущем. The 302 status code indicates to the client not to store the URL and use it in the future.

Дополнительные сведения о кодах состояния см. в документе RFC 2616: определения кодов состояния. For more information on status codes, see RFC 2616: Status Code Definitions.

Переопределение URL-адреса является операцией на стороне сервера для предоставления ресурса с другого адреса ресурса, отличного от запрошенного клиентом. A URL rewrite is a server-side operation that provides a resource from a different resource address than the client requested. Переопределение URL-адреса не требует кругового обращения к серверу. Rewriting a URL doesn’t require a round trip to the server. Переопределенный URL-адрес не возвращается клиенту и не отображается в адресной строке браузера. The rewritten URL isn’t returned to the client and doesn’t appear in the browser’s address bar.

Когда /resource переопределяется на /different-resource , сервер получает и запрашивает ресурс внутри в /different-resource . If /resource is rewritten to /different-resource , the server internally fetches and returns the resource at /different-resource .

Хотя клиент может быть в состоянии получить ресурс по переопределенному URL-адресу, когда клиент отправляет запрос и получает отклик, он не уведомляется о наличии ресурса по переопределенному URL-адресу. Although the client might be able to retrieve the resource at the rewritten URL, the client isn’t informed that the resource exists at the rewritten URL when it makes its request and receives the response.

Пример приложения с переопределением URL-адресов URL rewriting sample app

Вы можете ознакомиться с функциями ПО промежуточного слоя переопределения URL-адресов на примере приложения. You can explore the features of the URL Rewriting Middleware with the sample app. Это приложение применяет правила перенаправления и переопределения и показывает перенаправленный или переопределенный URL-адрес для нескольких сценариев. The app applies redirect and rewrite rules and shows the redirected or rewritten URL for several scenarios.

Условия для использования ПО промежуточного слоя для переопределения URL-адресов When to use URL Rewriting Middleware

Используйте ПО промежуточного слоя для переопределения URL-адресов, если невозможно использовать следующие подходы: Use URL Rewriting Middleware when you’re unable to use the following approaches:

Кроме того, используйте ПО промежуточного слоя, когда приложение размещается на сервере HTTP.sys (который раньше назывался WebListener). Also, use the middleware when the app is hosted on HTTP.sys server (formerly called WebListener).

Основные причины для использования переопределения URL-адресов на основе сервера в IIS, Apache и Nginx: The main reasons to use the server-based URL rewriting technologies in IIS, Apache, and Nginx are:

ПО промежуточного слоя не поддерживает все функции этих модулей. The middleware doesn’t support the full features of these modules.

Некоторые функции серверных модулей не работают с проектами ASP.NET Core, например ограничения IsFile и IsDirectory для модуля переопределения IIS. Some of the features of the server modules don’t work with ASP.NET Core projects, such as the IsFile and IsDirectory constraints of the IIS Rewrite module. В этих случаях следует использовать ПО промежуточного слоя. In these scenarios, use the middleware instead.

Производительность ПО промежуточного слоя, скорее всего, не соответствует производительности модулей. The performance of the middleware probably doesn’t match that of the modules.

Тестирование производительности — это единственный способ узнать точно, какой подход больше всего снижает производительность или является ли такое снижение незначительным. Benchmarking is the only way to know for sure which approach degrades performance the most or if degraded performance is negligible.

Пакет Package

ПО промежуточного слоя перезаписи URL-адресов предоставляется пакетом Microsoft.AspNetCore.Rewrite, который неявно включается в приложения ASP.NET Core. URL Rewriting Middleware is provided by the Microsoft.AspNetCore.Rewrite package, which is implicitly included in ASP.NET Core apps.

Расширение и параметры Extension and options

Задайте правила переопределения и перенаправления URL-адресов, создав экземпляр класса RewriteOptions для каждого правила с помощью методов расширения. Establish URL rewrite and redirect rules by creating an instance of the RewriteOptions class with extension methods for each of your rewrite rules. Несколько правил можно объединить в цепочку в том порядке, в котором они должны обрабатываться. Chain multiple rules in the order that you would like them processed. RewriteOptions передаются в ПО промежуточного слоя для переопределения URL-адресов по мере его добавления в конвейер запросов с помощью UseRewriter: The RewriteOptions are passed into the URL Rewriting Middleware as it’s added to the request pipeline with UseRewriter:

Перенаправление не www на www Redirect non-www to www

Три параметра разрешают приложению перенаправлять запросы, отличные от www , на www : Three options permit the app to redirect non- www requests to www :

AddRedirectToWwwPermanent – Окончательно перенаправляет запрос в поддомен www , если запрос не является www . AddRedirectToWwwPermanent – Permanently redirect the request to the www subdomain if the request is non- www . Перенаправляет с кодом состояния Status308PermanentRedirect. Redirects with a Status308PermanentRedirect status code.

AddRedirectToWww – Перенаправляет запрос в поддомен www , если входящий запрос не является www . AddRedirectToWww – Redirect the request to the www subdomain if the incoming request is non- www . Перенаправляет с кодом состояния Status307TemporaryRedirect. Redirects with a Status307TemporaryRedirect status code. Перегрузка позволяет предоставить код состояния для ответа. An overload permits you to provide the status code for the response. Используйте поле класса StatusCodes для назначения кода состояния. Use a field of the StatusCodes class for a status code assignment.

Перенаправление URL-адресов URL redirect

Используйте AddRedirect для перенаправления запросов. Use AddRedirect to redirect requests. Первый параметр содержит регулярное выражение, соответствующее пути входящего URL-адреса. The first parameter contains your regex for matching on the path of the incoming URL. Второй параметр является строкой замены. The second parameter is the replacement string. Третий параметр (при его наличии) указывает код состояния. The third parameter, if present, specifies the status code. Если код состояния не задан, по умолчанию используется код 302 (найдено) , указывающий, что ресурс временно перемещен или заменен. If you don’t specify the status code, the status code defaults to 302 — Found, which indicates that the resource is temporarily moved or replaced.

В браузере с включенными средствами разработчика выполните запрос для примера приложения по пути /redirect-rule/1234/5678 . In a browser with developer tools enabled, make a request to the sample app with the path /redirect-rule/1234/5678 . Регулярное выражение соответствует пути запроса в redirect-rule/(.*) , и этот путь заменяется на /redirected/1234/5678 . The regex matches the request path on redirect-rule/(.*) , and the path is replaced with /redirected/1234/5678 . URL-адрес перенаправления отправляется обратно клиенту с кодом состояния 302 (найдено) . The redirect URL is sent back to the client with a 302 — Found status code. Браузер выполняет новый запрос на URL-адрес перенаправления, отображаемый в адресной строке. The browser makes a new request at the redirect URL, which appears in the browser’s address bar. Поскольку в примере приложения нет правил, соответствующих URL-адресу перенаправления: Since no rules in the sample app match on the redirect URL:

  • Второй запрос получает от приложения ответ 200 (ОК) . The second request receives a 200 — OK response from the app.
  • Текст ответа показывает URL-адрес перенаправления. The body of the response shows the redirect URL.

При перенаправлении URL-адреса используется круговое обращение к серверу. A round trip is made to the server when a URL is redirected.

Соблюдайте осторожность при задании правил перенаправления. Be cautious when establishing redirect rules. Они оцениваются для каждого запроса, отправляемого в приложение, даже после перенаправления. Redirect rules are evaluated on every request to the app, including after a redirect. Можно легко случайно создать бесконечный цикл перенаправлений. It’s easy to accidentally create a loop of infinite redirects.

Исходный запрос: /redirect-rule/1234/5678 Original Request: /redirect-rule/1234/5678

Часть выражения, заключенная в скобки, называется группой записи. The part of the expression contained within parentheses is called a capture group. Точка ( . ) в выражении означает совпадение с любым символом. The dot ( . ) of the expression means match any character. Звездочка ( * ) означает совпадение с предыдущим символом ноль или более раз. The asterisk ( * ) indicates match the preceding character zero or more times. Таким образом, два последних сегмента пути URL-адреса, 1234/5678 , перехватываются группой записи (.*) . Therefore, the last two path segments of the URL, 1234/5678 , are captured by capture group (.*) . Любое значение, указанное в URL-адресе запроса после redirect-rule/ , перехватывается этой группой записи. Any value you provide in the request URL after redirect-rule/ is captured by this single capture group.

В строке замены группы записи внедряются с помощью знака доллара ( $ ), за которым следует порядковый номер записи. In the replacement string, captured groups are injected into the string with the dollar sign ( $ ) followed by the sequence number of the capture. Первое значение группы записи получается с помощью $1 , второе — с помощью $2 , после чего они продолжают по очереди использоваться для групп записи в регулярном выражении. The first capture group value is obtained with $1 , the second with $2 , and they continue in sequence for the capture groups in your regex. В регулярном выражении правила перенаправления в примере приложения присутствует всего одна группа записи, поэтому в строку замены внедряется тоже одна строка — $1 . There’s only one captured group in the redirect rule regex in the sample app, so there’s only one injected group in the replacement string, which is $1 . Когда применяется правило, URL-адрес становится /redirected/1234/5678 . When the rule is applied, the URL becomes /redirected/1234/5678 .

Перенаправление URL-адресов на защищенную конечную точку URL redirect to a secure endpoint

Используйте AddRedirectToHttps, чтобы перенаправлять HTTP-запросы на тот же узел и путь с использованием протокола HTTPS. Use AddRedirectToHttps to redirect HTTP requests to the same host and path using the HTTPS protocol. Если код состояния не указан, ПО промежуточного слоя по умолчанию использует значение 302 (найдено) . If the status code isn’t supplied, the middleware defaults to 302 — Found. Если порт не указан: If the port isn’t supplied:

  • ПО промежуточного слоя по умолчанию устанавливается на null . The middleware defaults to null .
  • Схема меняется на https (протокол HTTPS), и клиент обращается к ресурсу через порт 443. The scheme changes to https (HTTPS protocol), and the client accesses the resource on port 443.

Этот пример показывает, как задать код состояния 301 (перемещен окончательно) и изменить порт на 5001. The following example shows how to set the status code to 301 — Moved Permanently and change the port to 5001.

Используйте AddRedirectToHttpsPermanent, чтобы перенаправить небезопасные запросы на тот же узел и путь с использованием безопасного протокола HTTPS через порт 443. Use AddRedirectToHttpsPermanent to redirect insecure requests to the same host and path with secure HTTPS protocol on port 443. ПО промежуточного слоя задает код состояния 301 (перемещен окончательно) . The middleware sets the status code to 301 — Moved Permanently.

При перенаправлении на защищенную конечную точку без дополнительных правил перенаправления рекомендуется использовать ПО промежуточного слоя перенаправления на HTTPS. When redirecting to a secure endpoint without the requirement for additional redirect rules, we recommend using HTTPS Redirection Middleware. Дополнительные сведения см. в разделе Обязательное использование HTTPS. For more information, see the Enforce HTTPS topic.

Пример приложения позволяет продемонстрировать использование AddRedirectToHttps или AddRedirectToHttpsPermanent . The sample app is capable of demonstrating how to use AddRedirectToHttps or AddRedirectToHttpsPermanent . Добавьте этот метод расширения в RewriteOptions . Add the extension method to the RewriteOptions . Выполните небезопасный запрос к приложению по любому URL-адресу. Make an insecure request to the app at any URL. Закройте предостережение системы безопасности о том, что самозаверяющий сертификат не является доверенным, или создайте исключение, чтобы сделать сертификат доверенным. Dismiss the browser security warning that the self-signed certificate is untrusted or create an exception to trust the certificate.

Исходный запрос с использованием AddRedirectToHttps(301, 5001) : http://localhost:5000/secure Original Request using AddRedirectToHttps(301, 5001) : http://localhost:5000/secure

Исходный запрос с использованием AddRedirectToHttpsPermanent : http://localhost:5000/secure Original Request using AddRedirectToHttpsPermanent : http://localhost:5000/secure


Переопределение URL-адресов URL rewrite

Используйте AddRewrite, чтобы создать правило для переопределения URL-адресов. Use AddRewrite to create a rule for rewriting URLs. Первый параметр содержит регулярное выражение, соответствующее пути входящего URL-адреса. The first parameter contains the regex for matching on the incoming URL path. Второй параметр является строкой замены. The second parameter is the replacement string. Третий параметр skipRemainingRules: сообщает ПО промежуточного слоя, нужно ли пропустить дополнительные правила переопределения, если применяется текущее правило. The third parameter, skipRemainingRules: , indicates to the middleware whether or not to skip additional rewrite rules if the current rule is applied.

Исходный запрос: /rewrite-rule/1234/5678 Original Request: /rewrite-rule/1234/5678

Карет ( ^ ) в начале выражение означает, что сопоставление начинается с начала URL-адреса. The carat ( ^ ) at the beginning of the expression means that matching starts at the beginning of the URL path.

В предыдущем примере с правилом перенаправления, redirect-rule/(.*) , в начале регулярного выражения нет символа ^ . In the earlier example with the redirect rule, redirect-rule/(.*) , there’s no carat ( ^ ) at the start of the regex. Таким образом, для успешного совпадения до redirect-rule/ в пути могут стоять любые символы. Therefore, any characters may precede redirect-rule/ in the path for a successful match.

Путь Path Соответствие Match
/redirect-rule/1234/5678 Yes Yes
/my-cool-redirect-rule/1234/5678 Да Yes
/anotherredirect-rule/1234/5678 Yes Yes

Правило переопределения ^rewrite-rule/(\d+)/(\d+) соответствует путям, только если они начинаются с rewrite-rule/ . The rewrite rule, ^rewrite-rule/(\d+)/(\d+) , only matches paths if they start with rewrite-rule/ . В следующей таблице обратите внимание на разницу в сопоставлении. In the following table, note the difference in matching.

Путь Path Соответствие Match
/rewrite-rule/1234/5678 Yes Yes
/my-cool-rewrite-rule/1234/5678 Нет No
/anotherrewrite-rule/1234/5678 Нет No

После части ^rewrite-rule/ выражения стоят две группы записи (\d+)/(\d+) . Following the ^rewrite-rule/ portion of the expression, there are two capture groups, (\d+)/(\d+) . \d означает соответствие цифре (числу) . The \d signifies match a digit (number). Знак «плюс» ( + ) означает соответствие одному или нескольким предшествующим символам. The plus sign ( + ) means match one or more of the preceding character. Таким образом, URL-адрес должен содержать число, за которым идет прямая косая черта, за которой идет другое число. Therefore, the URL must contain a number followed by a forward-slash followed by another number. Эти группы записи внедряются в переопределенный URL-адрес как $1 и $2 . These capture groups are injected into the rewritten URL as $1 and $2 . Строка замены для правила переопределения помещает группы записи в строку запроса. The rewrite rule replacement string places the captured groups into the query string. Запрошенный путь /rewrite-rule/1234/5678 переопределяется, чтобы ресурс можно было получить по адресу /rewritten?var1=1234&var2=5678 . The requested path of /rewrite-rule/1234/5678 is rewritten to obtain the resource at /rewritten?var1=1234&var2=5678 . Если в исходном запросе присутствует строка запроса, она сохраняется при переопределении URL-адреса. If a query string is present on the original request, it’s preserved when the URL is rewritten.

Круговое обращение к серверу для получения ресурса не выполняется. There’s no round trip to the server to obtain the resource. Если ресурс существует, он извлекается и возвращается клиенту с кодом состояния 200 (ОК) . If the resource exists, it’s fetched and returned to the client with a 200 — OK status code. Так как клиент не перенаправляется, URL-адрес в адресной строке браузера не изменяется. Because the client isn’t redirected, the URL in the browser’s address bar doesn’t change. Клиенты не могут узнать, что на сервере произошла операция переопределения URL-адреса. Clients can’t detect that a URL rewrite operation occurred on the server.

Используйте skipRemainingRules: true при любой возможности, так как правила сопоставления потребляют много ресурсов и ухудшают время отклика приложения. Use skipRemainingRules: true whenever possible because matching rules is computationally expensive and increases app response time. Чтобы максимально ускорить отклик приложения: For the fastest app response:

  • расположите правила переопределения в порядке от наиболее к наименее часто используемому; Order rewrite rules from the most frequently matched rule to the least frequently matched rule.
  • пропускайте обработку оставшихся правил, когда совпадение найдено и обработка дополнительных правил не требуется. Skip the processing of the remaining rules when a match occurs and no additional rule processing is required.

Apache mod_rewrite Apache mod_rewrite

Для применения правил mod_rewrite Apache можно использовать AddApacheModRewrite. Apply Apache mod_rewrite rules with AddApacheModRewrite. Убедитесь, что файл правил развертывается вместе с приложением. Make sure that the rules file is deployed with the app. Дополнительные сведения и примеры правил mod_rewrite см. в статье о правилах mod_rewrite Apache. For more information and examples of mod_rewrite rules, see Apache mod_rewrite.

StreamReader используется для чтения правил из файла ApacheModRewrite.txt: A StreamReader is used to read the rules from the ApacheModRewrite.txt rules file:

Пример приложения перенаправляет запросы из /apache-mod-rules-redirect/(.\*) в /redirected? >. The sample app redirects requests from /apache-mod-rules-redirect/(.\*) to /redirected? >. Отклик имеет код состояния 302 (найдено) . The response status code is 302 — Found.

Исходный запрос: /apache-mod-rules-redirect/1234 Original Request: /apache-mod-rules-redirect/1234

ПО промежуточного слоя поддерживает следующие переменные сервера в mod_rewrite Apache: The middleware supports the following Apache mod_rewrite server variables:

  • CONN_REMOTE_ADDR CONN_REMOTE_ADDR
  • HTTP_ACCEPT HTTP_ACCEPT
  • HTTP_CONNECTION HTTP_CONNECTION
  • HTTP_COOKIE HTTP_COOKIE
  • HTTP_FORWARDED HTTP_FORWARDED
  • HTTP_HOST HTTP_HOST
  • HTTP_REFERER HTTP_REFERER
  • HTTP_USER_AGENT HTTP_USER_AGENT
  • HTTPS HTTPS
  • IPV6 IPV6
  • QUERY_STRING QUERY_STRING
  • REMOTE_ADDR REMOTE_ADDR
  • REMOTE_PORT REMOTE_PORT
  • REQUEST_FILENAME REQUEST_FILENAME
  • REQUEST_METHOD REQUEST_METHOD
  • REQUEST_SCHEME REQUEST_SCHEME
  • REQUEST_URI REQUEST_URI
  • SCRIPT_FILENAME SCRIPT_FILENAME
  • SERVER_ADDR SERVER_ADDR
  • SERVER_PORT SERVER_PORT
  • SERVER_PROTOCOL SERVER_PROTOCOL
  • TIME TIME
  • TIME_DAY TIME_DAY
  • TIME_HOUR TIME_HOUR
  • TIME_MIN TIME_MIN
  • TIME_MON TIME_MON
  • TIME_SEC TIME_SEC
  • TIME_WDAY TIME_WDAY
  • TIME_YEAR TIME_YEAR

Правила модуля переопределения URL-адресов для IIS IIS URL Rewrite Module rules

Чтобы использовать тот же набор правил, который применяется к модулю переопределения URL-адресов для IIS, используйте AddIISUrlRewrite. To use the same rule set that applies to the IIS URL Rewrite Module, use AddIISUrlRewrite. Убедитесь, что файл правил развертывается вместе с приложением. Make sure that the rules file is deployed with the app. Не указывайте ПО промежуточного слоя использовать файл приложения web.config при работе в службах IIS Windows Server. Don’t direct the middleware to use the app’s web.config file when running on Windows Server IIS. В IIS эти правила нужно хранить за пределами файла приложения web.config, чтобы предотвратить конфликты с модулем переопределения для IIS. With IIS, these rules should be stored outside of the app’s web.config file in order to avoid conflicts with the IIS Rewrite module. Дополнительные сведения и примеры правил модуля переопределения URL-адресов для IIS см. в разделах Использование модуля переопределения URL-адресов 2.0 и Справочник по конфигурации модуля переопределения URL-адресов. For more information and examples of IIS URL Rewrite Module rules, see Using Url Rewrite Module 2.0 and URL Rewrite Module Configuration Reference.

StreamReader используется для чтения правил из файла IISUrlRewrite.xml: A StreamReader is used to read the rules from the IISUrlRewrite.xml rules file:

Пример приложения переопределяет запросы с /iis-rules-rewrite/(.*) на /rewritten? >. The sample app rewrites requests from /iis-rules-rewrite/(.*) to /rewritten? >. Клиенту отправляется отклик с кодом состояния 200 (ОК) . The response is sent to the client with a 200 — OK status code.

Исходный запрос: /iis-rules-rewrite/1234 Original Request: /iis-rules-rewrite/1234

Если имеется активный модуль переопределения для IIS, где настроены правила брандмауэра уровня сервера, способные негативно повлиять на ваше приложение, можно отключить этот модуль для приложения. If you have an active IIS Rewrite Module with server-level rules configured that would impact your app in undesirable ways, you can disable the IIS Rewrite Module for an app. Дополнительные сведения см. в разделе Отключение модулей IIS. For more information, see Disabling IIS modules.

Неподдерживаемые функции Unsupported features

ПО промежуточного слоя, выпущенное вместе с ASP.NET Core 2.x, не поддерживает следующие функции в модуле переопределения URL-адресов для IIS: The middleware released with ASP.NET Core 2.x doesn’t support the following IIS URL Rewrite Module features:

  • Правила для исходящих подключений Outbound Rules
  • Пользовательские переменные сервера Custom Server Variables
  • Знаки подстановки Wildcards
  • LogRewrittenUrl LogRewrittenUrl

Поддерживаемые переменные сервера Supported server variables

ПО промежуточного слоя поддерживает следующие переменные сервера в модуле переопределения URL-адресов для IIS: The middleware supports the following IIS URL Rewrite Module server variables:

  • CONTENT_LENGTH CONTENT_LENGTH
  • CONTENT_TYPE CONTENT_TYPE
  • HTTP_ACCEPT HTTP_ACCEPT
  • HTTP_CONNECTION HTTP_CONNECTION
  • HTTP_COOKIE HTTP_COOKIE
  • HTTP_HOST HTTP_HOST
  • HTTP_REFERER HTTP_REFERER
  • HTTP_URL HTTP_URL
  • HTTP_USER_AGENT HTTP_USER_AGENT
  • HTTPS HTTPS
  • LOCAL_ADDR LOCAL_ADDR
  • QUERY_STRING QUERY_STRING
  • REMOTE_ADDR REMOTE_ADDR
  • REMOTE_PORT REMOTE_PORT
  • REQUEST_FILENAME REQUEST_FILENAME
  • REQUEST_URI REQUEST_URI

Можно также получить IFileProvider через PhysicalFileProvider. You can also obtain an IFileProvider via a PhysicalFileProvider. Такой подход позволяет более гибко задавать расположение для файлов с правилами переопределения. This approach may provide greater flexibility for the location of your rewrite rules files. Убедитесь, что эти файлы развертываются на сервере по указанному пути. Make sure that your rewrite rules files are deployed to the server at the path you provide.

Правило, основанное на методе Method-based rule

Используйте Add, чтобы реализовать собственную логику правил в методе. Use Add to implement your own rule logic in a method. Add предоставляет RewriteContext, который предоставляет HttpContext для использования в методе. Add exposes the RewriteContext, which makes available the HttpContext for use in your method. RewriteContext.Result определяет, как осуществляется дополнительная обработка в конвейере. The RewriteContext.Result determines how additional pipeline processing is handled. Установите значение одного из полей RuleResult из следующей таблицы. Set the value to one of the RuleResult fields described in the following table.

RewriteContext.Result Действие Action
RuleResult.ContinueRules (по умолчанию) RuleResult.ContinueRules (default) Продолжение применения правил. Continue applying rules.
RuleResult.EndResponse Остановка применения правил и отправка отклика. Stop applying rules and send the response.
RuleResult.SkipRemainingRules Остановка применения правил и отправка контекста в следующий компонент ПО промежуточного слоя. Stop applying rules and send the context to the next middleware.

Пример приложения демонстрирует метод, который перенаправляет запросы для путей, заканчивающихся на .xml. The sample app demonstrates a method that redirects requests for paths that end with .xml. Если запрос выполняется для /file.xml , запрос перенаправляется к /xmlfiles/file.xml . If a request is made for /file.xml , the request is redirected to /xmlfiles/file.xml . Для кода состояния задается значение 301 (перемещен окончательно) . The status code is set to 301 — Moved Permanently. Когда браузер отправляет новый запрос на /xmlfiles/file.xml, ПО промежуточного слоя статических файлов предоставляет файл клиенту из папки wwwroot/xmlfiles. When the browser makes a new request for /xmlfiles/file.xml, Static File Middleware serves the file to the client from the wwwroot/xmlfiles folder. Для перенаправления необходимо явно указать код состояния ответа. For a redirect, explicitly set the status code of the response. В противном случае возвращается код состояния 200 (ОК) и перенаправление на стороне клиента не происходит. Otherwise, a 200 — OK status code is returned, and the redirect doesn’t occur on the client.

Этот подход также переопределяет запросы. This approach can also rewrite requests. В примере приложения показано переопределение пути для любого запроса текстового файла, чтобы отправить текстовый файл file.txt из папки wwwroot. The sample app demonstrates rewriting the path for any text file request to serve the file.txt text file from the wwwroot folder. ПО промежуточного слоя статических файлов предоставляет файл по обновленному пути запроса: Static File Middleware serves the file based on the updated request path:

Правило, основанное на IRule IRule-based rule

Используйте Add, чтобы использовать собственную логику правил в классе, реализующем интерфейс IRule. Use Add to use rule logic in a class that implements the IRule interface. IRule позволяет более гибко применять правила, основанные на методах. IRule provides greater flexibility over using the method-based rule approach. Класс реализации может включать конструктор, который позволяет передавать параметры для метода ApplyRule. Your implementation class may include a constructor that allows you can pass in parameters for the ApplyRule method.

Значения параметров в примере приложения для extension и newPath проверяются на соответствие нескольким условиям. The values of the parameters in the sample app for the extension and the newPath are checked to meet several conditions. extension должен содержать одно из значений: .png, .jpg или .gif. The extension must contain a value, and the value must be .png, .jpg, or .gif. Если newPath не является допустимым, возникает исключение ArgumentException. If the newPath isn’t valid, an ArgumentException is thrown. Если запрос выполняется для image.png, запрос перенаправляется к /png-images/image.png . If a request is made for image.png, the request is redirected to /png-images/image.png . Если запрос выполняется для image.jpg, запрос перенаправляется к /jpg-images/image.jpg . If a request is made for image.jpg, the request is redirected to /jpg-images/image.jpg . Для кода состояния устанавливается значение 301 (перемещен окончательно) , а также задается context.Result , чтобы остановить обработку правил и отправить отклик. The status code is set to 301 — Moved Permanently, and the context.Result is set to stop processing rules and send the response.

Исходный запрос: /image.png Original Request: /image.png

Исходный запрос: /image.jpg Original Request: /image.jpg

Примеры регулярных выражений Regex examples

Goal Goal Пример строки регулярного выражения Regex String &
и совпадения Match Example
Пример строки замены и Replacement String &
выходных данных Output Example
Переопределение пути в строке запроса Rewrite path into querystring ^path/(.*)/(.*)
/path/abc/123
path?var1=$1&var2=$2
/path?var1=abc&var2=123
Удаление косой черты в конце Strip trailing slash (.*)/$
/path/
$1
/path
Добавление косой черты в конце Enforce trailing slash (.*[^/])$
/path
$1/
/path/
Запрет переопределения отдельных запросов Avoid rewriting specific requests ^(.*)(? или ^(. *\.axd$)(.*)$ ^(.*)(? or ^(. *\.axd$)(.*)$
Да: /resource.htm Yes: /resource.htm
Нет: /resource.axd No: /resource.axd
rewritten/$1
/rewritten/resource.htm
/resource.axd
Переупорядочение сегментов URL-адреса Rearrange URL segments path/(.*)/(.*)/(.*)
path/1/2/3
path/$3/$2/$1
path/3/2/1
Замена сегмента URL-адреса Replace a URL segment ^(.*)/segment2/(.*)
/segment1/segment2/segment3
$1/replaced/$2
/segment1/replaced/segment3

Этот документ содержит вводные сведения о переопределении URL-адресов и инструкции по использованию ПО промежуточного слоя для переопределения URL-адресов в приложениях ASP.NET Core. This document introduces URL rewriting with instructions on how to use URL Rewriting Middleware in ASP.NET Core apps.

Переопределение URL-адресов представляет собой изменение URL-адресов запросов на основе одного или нескольких предопределенных правил. URL rewriting is the act of modifying request URLs based on one or more predefined rules. Переопределение URL-адресов создает абстракцию между расположениями ресурсов и их адресами, позволяя убрать тесную связь между ними. URL rewriting creates an abstraction between resource locations and their addresses so that the locations and addresses aren’t tightly linked. Существует несколько сценариев, где может пригодиться переопределение URL-адресов: URL rewriting is valuable in several scenarios to:


  • Временное или постоянное перемещение или замещение ресурсов сервера с сохранением стабильных указателей для этих ресурсов. Move or replace server resources temporarily or permanently and maintain stable locators for those resources.
  • Разделение обработки запросов между разными приложениями или разными областями одного приложения. Split request processing across different apps or across areas of one app.
  • Удаление, добавление или переупорядочение сегментов URL-адресов для входящих запросов. Remove, add, or reorganize URL segments on incoming requests.
  • Оптимизация общедоступных URL-адресов в целях оптимизации для поисковых систем (SEO). Optimize public URLs for Search Engine Optimization (SEO).
  • Разрешение использования понятных общедоступных URL-адресов, чтобы помочь посетителям прогнозировать содержимое, возвращаемое в результате запроса ресурса. Permit the use of friendly public URLs to help visitors predict the content returned by requesting a resource.
  • Перенаправление небезопасных запросов на защищенные конечные точки. Redirect insecure requests to secure endpoints.
  • Запрет вставки прямых ссылок, когда внешний сайт использует статический ресурс, размещенный на другом сайте, привязывая ресурс к своему содержимому. Prevent hotlinking, where an external site uses a hosted static asset on another site by linking the asset into its own content.

Переопределение URL-адресов может снижать производительность приложения. URL rewriting can reduce the performance of an app. Следует по возможности ограничить число и сложность правил. Where feasible, limit the number and complexity of rules.

Перенаправление и переопределение URL-адресов URL redirect and URL rewrite

Разница между перенаправлением и переопределением URL-адресов может показаться незначительной, но она оказывает существенное влияние на предоставление ресурсов клиентам. The difference in wording between URL redirect and URL rewrite is subtle but has important implications for providing resources to clients. ПО промежуточного слоя для переопределения URL-адресов в ASP.NET Core удовлетворяет потребность в обеих этих функциях. ASP.NET Core’s URL Rewriting Middleware is capable of meeting the need for both.

Перенаправление URL-адресов является операцией на стороне клиента, которая предписывает клиенту обратиться к ресурсу по другому адресу, отличному от запрошенного клиентом. A URL redirect involves a client-side operation, where the client is instructed to access a resource at a different address than the client originally requested. Для этого используется круговое обращение к серверу. This requires a round trip to the server. URL-адрес перенаправления, возвращаемый клиенту, отображается в адресной строке браузера, когда клиент отправляет новый запрос для данного ресурса. The redirect URL returned to the client appears in the browser’s address bar when the client makes a new request for the resource.

Если /resource перенаправляется на /different-resource , сервер отвечает, что клиенту следует получить ресурс в /different-resource с кодом состояния, указывающим, что такое перенаправление является временным или постоянным. If /resource is redirected to /different-resource , the server responds that the client should obtain the resource at /different-resource with a status code indicating that the redirect is either temporary or permanent.

При перенаправлении запросов на другой URL-адрес можно указать, является ли оно постоянным или временным, предоставив код состояния в ответе: When redirecting requests to a different URL, indicate whether the redirect is permanent or temporary by specifying the status code with the response:

Код состояния 301 (перемещен окончательно) используется, когда ресурс имеет новый постоянный URL-адрес и вы хотите сообщить клиенту, что все последующие запросы для этого ресурса должны использовать новый URL-адрес. The 301 — Moved Permanently status code is used where the resource has a new, permanent URL and you wish to instruct the client that all future requests for the resource should use the new URL. Клиент может кэшировать и повторно использовать отклик при получении кода состояния 301. The client may cache and reuse the response when a 301 status code is received.

Код состояния 302 (найдено) используется, когда перенаправление является временным или может меняться. The 302 — Found status code is used where the redirection is temporary or generally subject to change. Код состояния 302 указывает клиенту, что не нужно сохранять URL-адрес и использовать его в будущем. The 302 status code indicates to the client not to store the URL and use it in the future.

Дополнительные сведения о кодах состояния см. в документе RFC 2616: определения кодов состояния. For more information on status codes, see RFC 2616: Status Code Definitions.

Переопределение URL-адреса является операцией на стороне сервера для предоставления ресурса с другого адреса ресурса, отличного от запрошенного клиентом. A URL rewrite is a server-side operation that provides a resource from a different resource address than the client requested. Переопределение URL-адреса не требует кругового обращения к серверу. Rewriting a URL doesn’t require a round trip to the server. Переопределенный URL-адрес не возвращается клиенту и не отображается в адресной строке браузера. The rewritten URL isn’t returned to the client and doesn’t appear in the browser’s address bar.

Когда /resource переопределяется на /different-resource , сервер получает и запрашивает ресурс внутри в /different-resource . If /resource is rewritten to /different-resource , the server internally fetches and returns the resource at /different-resource .

Хотя клиент может быть в состоянии получить ресурс по переопределенному URL-адресу, когда клиент отправляет запрос и получает отклик, он не уведомляется о наличии ресурса по переопределенному URL-адресу. Although the client might be able to retrieve the resource at the rewritten URL, the client isn’t informed that the resource exists at the rewritten URL when it makes its request and receives the response.

Пример приложения с переопределением URL-адресов URL rewriting sample app

Вы можете ознакомиться с функциями ПО промежуточного слоя переопределения URL-адресов на примере приложения. You can explore the features of the URL Rewriting Middleware with the sample app. Это приложение применяет правила перенаправления и переопределения и показывает перенаправленный или переопределенный URL-адрес для нескольких сценариев. The app applies redirect and rewrite rules and shows the redirected or rewritten URL for several scenarios.

Условия для использования ПО промежуточного слоя для переопределения URL-адресов When to use URL Rewriting Middleware

Используйте ПО промежуточного слоя для переопределения URL-адресов, если невозможно использовать следующие подходы: Use URL Rewriting Middleware when you’re unable to use the following approaches:

Кроме того, используйте ПО промежуточного слоя, когда приложение размещается на сервере HTTP.sys (который раньше назывался WebListener). Also, use the middleware when the app is hosted on HTTP.sys server (formerly called WebListener).

Основные причины для использования переопределения URL-адресов на основе сервера в IIS, Apache и Nginx: The main reasons to use the server-based URL rewriting technologies in IIS, Apache, and Nginx are:

ПО промежуточного слоя не поддерживает все функции этих модулей. The middleware doesn’t support the full features of these modules.

Некоторые функции серверных модулей не работают с проектами ASP.NET Core, например ограничения IsFile и IsDirectory для модуля переопределения IIS. Some of the features of the server modules don’t work with ASP.NET Core projects, such as the IsFile and IsDirectory constraints of the IIS Rewrite module. В этих случаях следует использовать ПО промежуточного слоя. In these scenarios, use the middleware instead.

Производительность ПО промежуточного слоя, скорее всего, не соответствует производительности модулей. The performance of the middleware probably doesn’t match that of the modules.

Тестирование производительности — это единственный способ узнать точно, какой подход больше всего снижает производительность или является ли такое снижение незначительным. Benchmarking is the only way to know for sure which approach degrades performance the most or if degraded performance is negligible.

Пакет Package

Чтобы включить ПО промежуточного слоя в проект, добавьте ссылки на пакет в метапакет Microsoft.AspNetCore.App в файле проекта, который содержит пакет Microsoft.AspNetCore.Rewrite. To include the middleware in your project, add a package reference to the Microsoft.AspNetCore.App metapackage in the project file, which contains the Microsoft.AspNetCore.Rewrite package.

Если метапакет Microsoft.AspNetCore.App не используется, добавьте ссылку на проект в пакет Microsoft.AspNetCore.Rewrite . When not using the Microsoft.AspNetCore.App metapackage, add a project reference to the Microsoft.AspNetCore.Rewrite package.

Расширение и параметры Extension and options

Задайте правила переопределения и перенаправления URL-адресов, создав экземпляр класса RewriteOptions для каждого правила с помощью методов расширения. Establish URL rewrite and redirect rules by creating an instance of the RewriteOptions class with extension methods for each of your rewrite rules. Несколько правил можно объединить в цепочку в том порядке, в котором они должны обрабатываться. Chain multiple rules in the order that you would like them processed. RewriteOptions передаются в ПО промежуточного слоя для переопределения URL-адресов по мере его добавления в конвейер запросов с помощью UseRewriter: The RewriteOptions are passed into the URL Rewriting Middleware as it’s added to the request pipeline with UseRewriter:

Перенаправление не www на www Redirect non-www to www

Три параметра разрешают приложению перенаправлять запросы, отличные от www , на www : Three options permit the app to redirect non- www requests to www :

AddRedirectToWwwPermanent – Окончательно перенаправляет запрос в поддомен www , если запрос не является www . AddRedirectToWwwPermanent – Permanently redirect the request to the www subdomain if the request is non- www . Перенаправляет с кодом состояния Status308PermanentRedirect. Redirects with a Status308PermanentRedirect status code.

AddRedirectToWww – Перенаправляет запрос в поддомен www , если входящий запрос не является www . AddRedirectToWww – Redirect the request to the www subdomain if the incoming request is non- www . Перенаправляет с кодом состояния Status307TemporaryRedirect. Redirects with a Status307TemporaryRedirect status code. Перегрузка позволяет предоставить код состояния для ответа. An overload permits you to provide the status code for the response. Используйте поле класса StatusCodes для назначения кода состояния. Use a field of the StatusCodes class for a status code assignment.

Перенаправление URL-адресов URL redirect

Используйте AddRedirect для перенаправления запросов. Use AddRedirect to redirect requests. Первый параметр содержит регулярное выражение, соответствующее пути входящего URL-адреса. The first parameter contains your regex for matching on the path of the incoming URL. Второй параметр является строкой замены. The second parameter is the replacement string. Третий параметр (при его наличии) указывает код состояния. The third parameter, if present, specifies the status code. Если код состояния не задан, по умолчанию используется код 302 (найдено) , указывающий, что ресурс временно перемещен или заменен. If you don’t specify the status code, the status code defaults to 302 — Found, which indicates that the resource is temporarily moved or replaced.

В браузере с включенными средствами разработчика выполните запрос для примера приложения по пути /redirect-rule/1234/5678 . In a browser with developer tools enabled, make a request to the sample app with the path /redirect-rule/1234/5678 . Регулярное выражение соответствует пути запроса в redirect-rule/(.*) , и этот путь заменяется на /redirected/1234/5678 . The regex matches the request path on redirect-rule/(.*) , and the path is replaced with /redirected/1234/5678 . URL-адрес перенаправления отправляется обратно клиенту с кодом состояния 302 (найдено) . The redirect URL is sent back to the client with a 302 — Found status code. Браузер выполняет новый запрос на URL-адрес перенаправления, отображаемый в адресной строке. The browser makes a new request at the redirect URL, which appears in the browser’s address bar. Поскольку в примере приложения нет правил, соответствующих URL-адресу перенаправления: Since no rules in the sample app match on the redirect URL:

  • Второй запрос получает от приложения ответ 200 (ОК) . The second request receives a 200 — OK response from the app.
  • Текст ответа показывает URL-адрес перенаправления. The body of the response shows the redirect URL.

При перенаправлении URL-адреса используется круговое обращение к серверу. A round trip is made to the server when a URL is redirected.

Соблюдайте осторожность при задании правил перенаправления. Be cautious when establishing redirect rules. Они оцениваются для каждого запроса, отправляемого в приложение, даже после перенаправления. Redirect rules are evaluated on every request to the app, including after a redirect. Можно легко случайно создать бесконечный цикл перенаправлений. It’s easy to accidentally create a loop of infinite redirects.

Исходный запрос: /redirect-rule/1234/5678 Original Request: /redirect-rule/1234/5678

Часть выражения, заключенная в скобки, называется группой записи. The part of the expression contained within parentheses is called a capture group. Точка ( . ) в выражении означает совпадение с любым символом. The dot ( . ) of the expression means match any character. Звездочка ( * ) означает совпадение с предыдущим символом ноль или более раз. The asterisk ( * ) indicates match the preceding character zero or more times. Таким образом, два последних сегмента пути URL-адреса, 1234/5678 , перехватываются группой записи (.*) . Therefore, the last two path segments of the URL, 1234/5678 , are captured by capture group (.*) . Любое значение, указанное в URL-адресе запроса после redirect-rule/ , перехватывается этой группой записи. Any value you provide in the request URL after redirect-rule/ is captured by this single capture group.

В строке замены группы записи внедряются с помощью знака доллара ( $ ), за которым следует порядковый номер записи. In the replacement string, captured groups are injected into the string with the dollar sign ( $ ) followed by the sequence number of the capture. Первое значение группы записи получается с помощью $1 , второе — с помощью $2 , после чего они продолжают по очереди использоваться для групп записи в регулярном выражении. The first capture group value is obtained with $1 , the second with $2 , and they continue in sequence for the capture groups in your regex. В регулярном выражении правила перенаправления в примере приложения присутствует всего одна группа записи, поэтому в строку замены внедряется тоже одна строка — $1 . There’s only one captured group in the redirect rule regex in the sample app, so there’s only one injected group in the replacement string, which is $1 . Когда применяется правило, URL-адрес становится /redirected/1234/5678 . When the rule is applied, the URL becomes /redirected/1234/5678 .

Перенаправление URL-адресов на защищенную конечную точку URL redirect to a secure endpoint

Используйте AddRedirectToHttps, чтобы перенаправлять HTTP-запросы на тот же узел и путь с использованием протокола HTTPS. Use AddRedirectToHttps to redirect HTTP requests to the same host and path using the HTTPS protocol. Если код состояния не указан, ПО промежуточного слоя по умолчанию использует значение 302 (найдено) . If the status code isn’t supplied, the middleware defaults to 302 — Found. Если порт не указан: If the port isn’t supplied:

  • ПО промежуточного слоя по умолчанию устанавливается на null . The middleware defaults to null .
  • Схема меняется на https (протокол HTTPS), и клиент обращается к ресурсу через порт 443. The scheme changes to https (HTTPS protocol), and the client accesses the resource on port 443.

Этот пример показывает, как задать код состояния 301 (перемещен окончательно) и изменить порт на 5001. The following example shows how to set the status code to 301 — Moved Permanently and change the port to 5001.

Используйте AddRedirectToHttpsPermanent, чтобы перенаправить небезопасные запросы на тот же узел и путь с использованием безопасного протокола HTTPS через порт 443. Use AddRedirectToHttpsPermanent to redirect insecure requests to the same host and path with secure HTTPS protocol on port 443. ПО промежуточного слоя задает код состояния 301 (перемещен окончательно) . The middleware sets the status code to 301 — Moved Permanently.


При перенаправлении на защищенную конечную точку без дополнительных правил перенаправления рекомендуется использовать ПО промежуточного слоя перенаправления на HTTPS. When redirecting to a secure endpoint without the requirement for additional redirect rules, we recommend using HTTPS Redirection Middleware. Дополнительные сведения см. в разделе Обязательное использование HTTPS. For more information, see the Enforce HTTPS topic.

Пример приложения позволяет продемонстрировать использование AddRedirectToHttps или AddRedirectToHttpsPermanent . The sample app is capable of demonstrating how to use AddRedirectToHttps or AddRedirectToHttpsPermanent . Добавьте этот метод расширения в RewriteOptions . Add the extension method to the RewriteOptions . Выполните небезопасный запрос к приложению по любому URL-адресу. Make an insecure request to the app at any URL. Закройте предостережение системы безопасности о том, что самозаверяющий сертификат не является доверенным, или создайте исключение, чтобы сделать сертификат доверенным. Dismiss the browser security warning that the self-signed certificate is untrusted or create an exception to trust the certificate.

Исходный запрос с использованием AddRedirectToHttps(301, 5001) : http://localhost:5000/secure Original Request using AddRedirectToHttps(301, 5001) : http://localhost:5000/secure

Исходный запрос с использованием AddRedirectToHttpsPermanent : http://localhost:5000/secure Original Request using AddRedirectToHttpsPermanent : http://localhost:5000/secure

Переопределение URL-адресов URL rewrite

Используйте AddRewrite, чтобы создать правило для переопределения URL-адресов. Use AddRewrite to create a rule for rewriting URLs. Первый параметр содержит регулярное выражение, соответствующее пути входящего URL-адреса. The first parameter contains the regex for matching on the incoming URL path. Второй параметр является строкой замены. The second parameter is the replacement string. Третий параметр skipRemainingRules: сообщает ПО промежуточного слоя, нужно ли пропустить дополнительные правила переопределения, если применяется текущее правило. The third parameter, skipRemainingRules: , indicates to the middleware whether or not to skip additional rewrite rules if the current rule is applied.

Исходный запрос: /rewrite-rule/1234/5678 Original Request: /rewrite-rule/1234/5678

Карет ( ^ ) в начале выражение означает, что сопоставление начинается с начала URL-адреса. The carat ( ^ ) at the beginning of the expression means that matching starts at the beginning of the URL path.

В предыдущем примере с правилом перенаправления, redirect-rule/(.*) , в начале регулярного выражения нет символа ^ . In the earlier example with the redirect rule, redirect-rule/(.*) , there’s no carat ( ^ ) at the start of the regex. Таким образом, для успешного совпадения до redirect-rule/ в пути могут стоять любые символы. Therefore, any characters may precede redirect-rule/ in the path for a successful match.

Путь Path Соответствие Match
/redirect-rule/1234/5678 Yes Yes
/my-cool-redirect-rule/1234/5678 Да Yes
/anotherredirect-rule/1234/5678 Yes Yes

Правило переопределения ^rewrite-rule/(\d+)/(\d+) соответствует путям, только если они начинаются с rewrite-rule/ . The rewrite rule, ^rewrite-rule/(\d+)/(\d+) , only matches paths if they start with rewrite-rule/ . В следующей таблице обратите внимание на разницу в сопоставлении. In the following table, note the difference in matching.

Путь Path Соответствие Match
/rewrite-rule/1234/5678 Yes Yes
/my-cool-rewrite-rule/1234/5678 Нет No
/anotherrewrite-rule/1234/5678 Нет No

После части ^rewrite-rule/ выражения стоят две группы записи (\d+)/(\d+) . Following the ^rewrite-rule/ portion of the expression, there are two capture groups, (\d+)/(\d+) . \d означает соответствие цифре (числу) . The \d signifies match a digit (number). Знак «плюс» ( + ) означает соответствие одному или нескольким предшествующим символам. The plus sign ( + ) means match one or more of the preceding character. Таким образом, URL-адрес должен содержать число, за которым идет прямая косая черта, за которой идет другое число. Therefore, the URL must contain a number followed by a forward-slash followed by another number. Эти группы записи внедряются в переопределенный URL-адрес как $1 и $2 . These capture groups are injected into the rewritten URL as $1 and $2 . Строка замены для правила переопределения помещает группы записи в строку запроса. The rewrite rule replacement string places the captured groups into the query string. Запрошенный путь /rewrite-rule/1234/5678 переопределяется, чтобы ресурс можно было получить по адресу /rewritten?var1=1234&var2=5678 . The requested path of /rewrite-rule/1234/5678 is rewritten to obtain the resource at /rewritten?var1=1234&var2=5678 . Если в исходном запросе присутствует строка запроса, она сохраняется при переопределении URL-адреса. If a query string is present on the original request, it’s preserved when the URL is rewritten.

Круговое обращение к серверу для получения ресурса не выполняется. There’s no round trip to the server to obtain the resource. Если ресурс существует, он извлекается и возвращается клиенту с кодом состояния 200 (ОК) . If the resource exists, it’s fetched and returned to the client with a 200 — OK status code. Так как клиент не перенаправляется, URL-адрес в адресной строке браузера не изменяется. Because the client isn’t redirected, the URL in the browser’s address bar doesn’t change. Клиенты не могут узнать, что на сервере произошла операция переопределения URL-адреса. Clients can’t detect that a URL rewrite operation occurred on the server.

Используйте skipRemainingRules: true при любой возможности, так как правила сопоставления потребляют много ресурсов и ухудшают время отклика приложения. Use skipRemainingRules: true whenever possible because matching rules is computationally expensive and increases app response time. Чтобы максимально ускорить отклик приложения: For the fastest app response:

  • расположите правила переопределения в порядке от наиболее к наименее часто используемому; Order rewrite rules from the most frequently matched rule to the least frequently matched rule.
  • пропускайте обработку оставшихся правил, когда совпадение найдено и обработка дополнительных правил не требуется. Skip the processing of the remaining rules when a match occurs and no additional rule processing is required.

Apache mod_rewrite Apache mod_rewrite

Для применения правил mod_rewrite Apache можно использовать AddApacheModRewrite. Apply Apache mod_rewrite rules with AddApacheModRewrite. Убедитесь, что файл правил развертывается вместе с приложением. Make sure that the rules file is deployed with the app. Дополнительные сведения и примеры правил mod_rewrite см. в статье о правилах mod_rewrite Apache. For more information and examples of mod_rewrite rules, see Apache mod_rewrite.

StreamReader используется для чтения правил из файла ApacheModRewrite.txt: A StreamReader is used to read the rules from the ApacheModRewrite.txt rules file:

Пример приложения перенаправляет запросы из /apache-mod-rules-redirect/(.\*) в /redirected? >. The sample app redirects requests from /apache-mod-rules-redirect/(.\*) to /redirected? >. Отклик имеет код состояния 302 (найдено) . The response status code is 302 — Found.

Исходный запрос: /apache-mod-rules-redirect/1234 Original Request: /apache-mod-rules-redirect/1234

ПО промежуточного слоя поддерживает следующие переменные сервера в mod_rewrite Apache: The middleware supports the following Apache mod_rewrite server variables:

  • CONN_REMOTE_ADDR CONN_REMOTE_ADDR
  • HTTP_ACCEPT HTTP_ACCEPT
  • HTTP_CONNECTION HTTP_CONNECTION
  • HTTP_COOKIE HTTP_COOKIE
  • HTTP_FORWARDED HTTP_FORWARDED
  • HTTP_HOST HTTP_HOST
  • HTTP_REFERER HTTP_REFERER
  • HTTP_USER_AGENT HTTP_USER_AGENT
  • HTTPS HTTPS
  • IPV6 IPV6
  • QUERY_STRING QUERY_STRING
  • REMOTE_ADDR REMOTE_ADDR
  • REMOTE_PORT REMOTE_PORT
  • REQUEST_FILENAME REQUEST_FILENAME
  • REQUEST_METHOD REQUEST_METHOD
  • REQUEST_SCHEME REQUEST_SCHEME
  • REQUEST_URI REQUEST_URI
  • SCRIPT_FILENAME SCRIPT_FILENAME
  • SERVER_ADDR SERVER_ADDR
  • SERVER_PORT SERVER_PORT
  • SERVER_PROTOCOL SERVER_PROTOCOL
  • TIME TIME
  • TIME_DAY TIME_DAY
  • TIME_HOUR TIME_HOUR
  • TIME_MIN TIME_MIN
  • TIME_MON TIME_MON
  • TIME_SEC TIME_SEC
  • TIME_WDAY TIME_WDAY
  • TIME_YEAR TIME_YEAR

Правила модуля переопределения URL-адресов для IIS IIS URL Rewrite Module rules

Чтобы использовать тот же набор правил, который применяется к модулю переопределения URL-адресов для IIS, используйте AddIISUrlRewrite. To use the same rule set that applies to the IIS URL Rewrite Module, use AddIISUrlRewrite. Убедитесь, что файл правил развертывается вместе с приложением. Make sure that the rules file is deployed with the app. Не указывайте ПО промежуточного слоя использовать файл приложения web.config при работе в службах IIS Windows Server. Don’t direct the middleware to use the app’s web.config file when running on Windows Server IIS. В IIS эти правила нужно хранить за пределами файла приложения web.config, чтобы предотвратить конфликты с модулем переопределения для IIS. With IIS, these rules should be stored outside of the app’s web.config file in order to avoid conflicts with the IIS Rewrite module. Дополнительные сведения и примеры правил модуля переопределения URL-адресов для IIS см. в разделах Использование модуля переопределения URL-адресов 2.0 и Справочник по конфигурации модуля переопределения URL-адресов. For more information and examples of IIS URL Rewrite Module rules, see Using Url Rewrite Module 2.0 and URL Rewrite Module Configuration Reference.

StreamReader используется для чтения правил из файла IISUrlRewrite.xml: A StreamReader is used to read the rules from the IISUrlRewrite.xml rules file:

Пример приложения переопределяет запросы с /iis-rules-rewrite/(.*) на /rewritten? >. The sample app rewrites requests from /iis-rules-rewrite/(.*) to /rewritten? >. Клиенту отправляется отклик с кодом состояния 200 (ОК) . The response is sent to the client with a 200 — OK status code.

Исходный запрос: /iis-rules-rewrite/1234 Original Request: /iis-rules-rewrite/1234

Если имеется активный модуль переопределения для IIS, где настроены правила брандмауэра уровня сервера, способные негативно повлиять на ваше приложение, можно отключить этот модуль для приложения. If you have an active IIS Rewrite Module with server-level rules configured that would impact your app in undesirable ways, you can disable the IIS Rewrite Module for an app. Дополнительные сведения см. в разделе Отключение модулей IIS. For more information, see Disabling IIS modules.

Неподдерживаемые функции Unsupported features

ПО промежуточного слоя, выпущенное вместе с ASP.NET Core 2.x, не поддерживает следующие функции в модуле переопределения URL-адресов для IIS: The middleware released with ASP.NET Core 2.x doesn’t support the following IIS URL Rewrite Module features:

  • Правила для исходящих подключений Outbound Rules
  • Пользовательские переменные сервера Custom Server Variables
  • Знаки подстановки Wildcards
  • LogRewrittenUrl LogRewrittenUrl

Поддерживаемые переменные сервера Supported server variables

ПО промежуточного слоя поддерживает следующие переменные сервера в модуле переопределения URL-адресов для IIS: The middleware supports the following IIS URL Rewrite Module server variables:

  • CONTENT_LENGTH CONTENT_LENGTH
  • CONTENT_TYPE CONTENT_TYPE
  • HTTP_ACCEPT HTTP_ACCEPT
  • HTTP_CONNECTION HTTP_CONNECTION
  • HTTP_COOKIE HTTP_COOKIE
  • HTTP_HOST HTTP_HOST
  • HTTP_REFERER HTTP_REFERER
  • HTTP_URL HTTP_URL
  • HTTP_USER_AGENT HTTP_USER_AGENT
  • HTTPS HTTPS
  • LOCAL_ADDR LOCAL_ADDR
  • QUERY_STRING QUERY_STRING
  • REMOTE_ADDR REMOTE_ADDR
  • REMOTE_PORT REMOTE_PORT
  • REQUEST_FILENAME REQUEST_FILENAME
  • REQUEST_URI REQUEST_URI

Можно также получить IFileProvider через PhysicalFileProvider. You can also obtain an IFileProvider via a PhysicalFileProvider. Такой подход позволяет более гибко задавать расположение для файлов с правилами переопределения. This approach may provide greater flexibility for the location of your rewrite rules files. Убедитесь, что эти файлы развертываются на сервере по указанному пути. Make sure that your rewrite rules files are deployed to the server at the path you provide.

Правило, основанное на методе Method-based rule

Используйте Add, чтобы реализовать собственную логику правил в методе. Use Add to implement your own rule logic in a method. Add предоставляет RewriteContext, который предоставляет HttpContext для использования в методе. Add exposes the RewriteContext, which makes available the HttpContext for use in your method. RewriteContext.Result определяет, как осуществляется дополнительная обработка в конвейере. The RewriteContext.Result determines how additional pipeline processing is handled. Установите значение одного из полей RuleResult из следующей таблицы. Set the value to one of the RuleResult fields described in the following table.

RewriteContext.Result Действие Action
RuleResult.ContinueRules (по умолчанию) RuleResult.ContinueRules (default) Продолжение применения правил. Continue applying rules.
RuleResult.EndResponse Остановка применения правил и отправка отклика. Stop applying rules and send the response.
RuleResult.SkipRemainingRules Остановка применения правил и отправка контекста в следующий компонент ПО промежуточного слоя. Stop applying rules and send the context to the next middleware.

Пример приложения демонстрирует метод, который перенаправляет запросы для путей, заканчивающихся на .xml. The sample app demonstrates a method that redirects requests for paths that end with .xml. Если запрос выполняется для /file.xml , запрос перенаправляется к /xmlfiles/file.xml . If a request is made for /file.xml , the request is redirected to /xmlfiles/file.xml . Для кода состояния задается значение 301 (перемещен окончательно) . The status code is set to 301 — Moved Permanently. Когда браузер отправляет новый запрос на /xmlfiles/file.xml, ПО промежуточного слоя статических файлов предоставляет файл клиенту из папки wwwroot/xmlfiles. When the browser makes a new request for /xmlfiles/file.xml, Static File Middleware serves the file to the client from the wwwroot/xmlfiles folder. Для перенаправления необходимо явно указать код состояния ответа. For a redirect, explicitly set the status code of the response. В противном случае возвращается код состояния 200 (ОК) и перенаправление на стороне клиента не происходит. Otherwise, a 200 — OK status code is returned, and the redirect doesn’t occur on the client.

Этот подход также переопределяет запросы. This approach can also rewrite requests. В примере приложения показано переопределение пути для любого запроса текстового файла, чтобы отправить текстовый файл file.txt из папки wwwroot. The sample app demonstrates rewriting the path for any text file request to serve the file.txt text file from the wwwroot folder. ПО промежуточного слоя статических файлов предоставляет файл по обновленному пути запроса: Static File Middleware serves the file based on the updated request path:

Правило, основанное на IRule IRule-based rule

Используйте Add, чтобы использовать собственную логику правил в классе, реализующем интерфейс IRule. Use Add to use rule logic in a class that implements the IRule interface. IRule позволяет более гибко применять правила, основанные на методах. IRule provides greater flexibility over using the method-based rule approach. Класс реализации может включать конструктор, который позволяет передавать параметры для метода ApplyRule. Your implementation class may include a constructor that allows you can pass in parameters for the ApplyRule method.

Как перенаправить URL

wikiHow работает по принципу вики, а это значит, что многие наши статьи написаны несколькими авторами. При создании этой статьи над ее редактированием и улучшением работали, в том числе анонимно, 18 человек(а).


Количество источников, использованных в этой статье: 5. Вы найдете их список внизу страницы.

Существует несколько причин, чтобы использовать перенаправление URL. Вы можете перемещать контент с одного домена на другой, таким образом, необходимо будет перенаправить посетителей со старого сайта на новый. У вас может быть несколько доменов, относящихся к одному сайту. Либо вам необходимо перенаправить сайт без «www» на страницу правильного сайта. Создание страницы ошибки со ссылкой на новый сайт – простой вариант выполнения перенаправления, но не всегда лучший. Для сайта, у которого много трафика и хорошие результаты поиска, такое перенаправление будет означать начало с нуля. Вдобавок к этому, пользователи могут и не обратить внимания на ссылку с названием нового сайта. В методах, описанных ниже, трафик по-прежнему идет на старый домен, но и перенаправляется на новый. В то время как поисковые системы обновляют свои базы данных, новый домен сохранит за собой все результаты поиска. Сложность освоения процесса перенаправления URL зависит от того, на каком языке написан сайт, и насколько велик ваш опыт в редактировании кода.

Как обнаружить и устранить скрытую переадресацию для мобильных устройств

Привет, Хабр! Все мы любим, когда сайт отлично работает на любом устройстве, вне зависимости от размеров экрана, способов управления и взаимодействия. Нередко контент приходится незначительно адаптировать к устройству, на котором его просматривает пользователь: например, оптимизация для небольшого экрана смартфона предполагает изменение изображений и других элементов содержания. Чтобы мобильным посетителям было удобнее, разработчики нередко используют всплывающую панель навигации. Если такие модификации реализованы должным образом и их цель — повысить удобство, мы не рассматриваем их как нарушение правил Google.

То же самое относится к переадресации на сайты для мобильных устройств. Пользователям смартфонов будет удобнее работать не с обычной версией сайта, а с мобильной. Поэтому переадресация, например, с example.com/url1 на m.example.com/url1 оправдана. Однако скрытая переадресация мобильных пользователей на посторонние страницы мешает работе и нарушает рекомендации Google для веб-мастеров.

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

Что, где, когда?

Сегодня существует множество способов создать сайт. От готовых движков, плагинов и тем, до комфортных IDE, которые не требуют практически никаких знаний в области вёрстки. У многих крупных или старых ресурсов давно (ещё во времена обычных телефонов с JAVA-браузерами) появилась мобильная версия, которая может сильно отличаться от «полноценной». Тем не менее, мы считаем, что содержание сайта и предоставляемая информация должны совпадать по сути на всех устройствах. Давайте рассмотрим основные проблемы переадресации мобильных пользователей.

Проблемная обработка мобильных устройств
Иногда веб-мастера сами настраивают переадресацию мобильных посетителей, как правило, с нарушением наших рекомендаций. Если это вредит пользователям, мы вручную принимаем меры для решения проблемы (подробнее об этом читайте в конце статьи). Однако нам также известны случаи, когда скрытая переадресация выполняется без ведома владельца сайта.

Умышленное перенаправление в рекламных целях
Скрипт или элемент, размещенные на сайте для показа рекламы или монетизации контента, могут перенаправлять мобильных пользователей на сайт другой тематики без ведома веб-мастера. Причём неважно, вы сами разместили «проблемный» скрипт или ваш сайт взломали: если не понимать исходный код подключаемых модулей, получить троянского коня проще простого.

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

Общая программа действий проста, как раз-два-три: определить, изолировать, предотвратить. За дело!

Как обнаружить скрытую переадресацию для мобильных устройств?

Чтобы грамотно бороться с проблемой, её надо определить. О том, что кто-то «ворует» ваших мобильных пользователей вы можете и не догадываться, пока кто-нибудь не пожалутеся или вы сами случайно не наткнётесь на результаты работы вредоносных скриптов.

Сообщения от посетителей могут нести мало полезной информации и нагонять панику: «Я открыл ваш сайт, а он меня А-а-а-а-а-а, У-у-у-у-у-у, Ы-ы-ы-ы и предлагает тухлые фрукты по оптовым ценам». Ни проблемной страницы, ни информации об устройстве или браузере.

Итак, шаг первый: найти проблему. Советы могут выглядеть очевидными, но как показала практика, когда дело доходит до реальных проблем, многие пользователи и веб-мастера теряются и не знают, с чего начать. Начать следует с самого простого:

  • Откройте сайт на смартфоне и посмотрите, не попадете ли вы на другой ресурс
    Мы рекомендуем проверить свой сайт, перейдя на него из результатов поиска Google на смартфоне. При современном разнообразии на рынке мобильных устройств отладку удобнее проводить с использованием эмуляции мобильных устройств в компьютерных браузерах. Данную функцию поддерживают Chrome, Firefox и Safari. В последнем случае (Safari) потребуется открыть настройки браузера и установить флажок «Показывать меню „Разработка“ в строке меню».
  • Изучайте отзывы посетителей
    Пользователи могут видеть ваш сайт не так, как вы. У кого-то старый браузер, укого-то гора экстеншнов (они тоже могут подвергнутся атаке и начать подсовывать рекламу / переадресовывать пользователей). Всегда читайте отзывы посетителей и обращайте внимание на их жалобы, чтобы вовремя выявлять проблемы. Если требуется, задавайте уточняющие вопросы, попросите прислать скриншот или рассказать, как именно пользователь попал на проблемную страницу.
  • Отслеживайте действия посетителей и анализируйте статистику сайта
    Необычные действия мобильных пользователей можно обнаружить, изучая данные веб-аналитики. Стастистика — мощнейший инструмент, который позволяет выявлять проблемы там, где одиночные проверки и тесты ничего не показывают. Например, если среднее время, проведенное на сайте владельцами мобильных устройств (и только ими), резко сократилось — это может быть вызвано переадресацией.

Чтобы сразу же узнавать о значительных изменениях в поведении мобильных пользователей, можно настроить специальные оповещения в Google Analytics.

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

На моем сайте обнаружена скрытая переадресация для мобильных пользователей. Что делать?

Допустим, вы нашли проблему? Что дальше? Как с ней бороться? Шаг второй: изолировать источник проблем. Источников переадресации может быть два — внешнее или внутреннее воздействие.

В первом случае кто-то получил доступ к вашему сайту (уязвимости для популярных движков регулярно находятся и не всегда оперативно закрываются). Во втором вы, сами того не желая, заложили «бомбу замедленного действия», вставив какой-нибудь скрипт, не проверив его содержимое. Опционально, движок сайта мог самостоятельно обновить элементы с какого-нибудь репозитория, который был взломан. В любом случае, для устранения подобных проблем алгоритм одинаковый.

  • Проверьте, не взломан ли сайт
    Откройте раздел Проблемы безопасности в Search Console: если мы обнаружили взлом, внутри вы найдёте соответствующее оповещение.
    Кроме того, стоит изучить дополнительную информацию о типичных признаках взломанных сайтов и примеры из нашей практики. Если вы используете какой-либо движок или фреймворк — посмотрите новости соответствующего сообщества, быть может с проблемой столкнулись не только вы.
  • Проверьте, нет ли на сайте посторонних скриптов и элементов
    Если ваш сайт не взломан, проверьте, нет ли на нем сторонних скриптов или элементов, выполняющих переадресацию. Для этого выполните следующие действия:
    1. Внимание! Прежде чем вносить какие-либо изменения в работающий сайт, создайте резервную копию сайта, проверьте её работоспособность.
    2. Найдите страницу, на которой осуществляется переадресация пользователей. Если на ней находятся чужие скрипты и элементы — смело удаляйте их по одному.
    3. После каждого удаления проверяйте с мобильного устройства или через эмулятор, происходит ли переадресация.
    4. После локализации элемента, отвечающего за скрытую переадресацию, удалите его со всех страниц. Если элемент критически важен и необходим для функционирования сайта — попросите его поставщика помочь вам с отладкой.

Защищаем сайт

Шаг третий: предотвратить повторение. Здесь всё просто. Вы нашли причину переадресации — скрипт, элемент, модуль, что угодно. Если вы знаете, откуда он взялся — возможно, стоит перестать пользоваться этим источником расширений. Если нет — проверьте список известных уязвимостей для вашего движка или фреймворка, набора библиотек. Возможно, разработчики успели выпустить срочные обновления.

Не стоит исключать и человеческий фактор. Если взлома не было и вы не размещали скрипты / библиотеки / элементы, а они появились — посмотрите на историю доступов к сайту, возможно, инициативные модераторы или администраторы контента могли умышленно или неумышленно занести заразу на сайт.

Проверьте разрешения на чтение / запись в определённые папки, если запись не требуется — поставьте атрибут read only, он помешает злоумышленникам и вредоносам, попавшим через узкую лазейку, прописаться в рабочих папках и повысить уровень привилегий.

Используйте Search Console

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

Команда Google по оценке качества поиска может принять меры в отношении таких сайтов, например удалить URL из нашего индекса. Если подобное случится, вы, как владелец сайта увидите в Search Console соответствующие оповещения. Это лишь одна из причин, по которой мы рекомендуем вам зарегистрировать аккаунт в Search Console. Сам сервис крайне гибок и позволяет не только получать своевременные уведомления о проблемах, но и анализировать текущее состояние сайта, а также направлять в Google запросы на повторную проверку. Быстро, удобно, а главное — в одном месте.

One more thing

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

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

Если у вас есть вопросы или комментарии по переадресации для мобильных устройств, оставляйте их здесь либо задавайте их на форуме для веб-мастеров или в нашем сообществе для веб-мастеров на Google+.

Переадресация URL-адресов (перенаправление) на nginx с использованием только-www & amp; только HTTPS на основе постоянных ссылок WordPress

Я использую программное обеспечение WordPress с URL сайта по умолчанию «https://www.example.com/ «а также используя постоянные ссылки.

Мой текущий файл конфигурации nginx выглядит примерно так: http://pastebin.com/MxHUNtCc

Попробовал реализовать эти правила пересылки в nginx, но я не знаю, как поддерживать постоянные URL WordPress.

Спасибо за прочтение.

Решение

Вам нужно всего три серверных блока

  1. Для обработки перенаправления на порт 80 из http://example.com а также
    http://www.example.com в https://www.example.com
  2. Для обработки перенаправления на порт 443 из https://example.com в https://www.example.com
  3. Для обслуживания запросов и перенаправлений на https://www.example.com в порту 443

Приведенные ниже примеры модифицированы из вашего pastebin

Некоторые заметки

  1. Запрос к http://example.com попадет на серверный блок 1 и будет перенаправлен на https://example.com и будет обработан Серверным блоком 2, прежде чем снова будет перенаправлен на https://www.example.com и обрабатывается блоком 3 сервера. Это двойное перенаправление требуется для удовлетворения HTTP Strict Transport Security требования.
  2. Запрос к http://www.example.com попадет на серверный блок 1, а также будет перенаправлен на https://www.example.com и будет обработан Серверным блоком 3.
  3. Запрос к https://example.com попадет на серверный блок 2 и будет перенаправлен на https://www.example.com и будет обработан Серверным блоком 3. Обратите внимание, что проверка сертификата выполняется перед завершением соединения, т. е. задолго до любого перенаправления и если у вас нет действительного сертификата для https://example.com , пользователи получат предупреждающее сообщение в своих браузерах.
  4. Запрос к https://www.example.com попадет на серверный блок 3 и будет обработан там.

Другие решения

Также вы можете играть с server_name директива и $host установить перенаправление на конкретную схему. Если вы хотите перенаправить только поддомен WWW, используйте следующий код.

Я надеюсь, что это работает для вас.

Вы можете использовать постоянное перенаправление URL-адреса http на https, используя следующий новый блок сервера …

… и убедитесь, что существующий блок сервера правильно настроен с 443 портом и сертификатами.

Добавить комментарий