Перенаправления с помощью .htaccess, php, html и javascript
Содержание:
- Что такое переадресация 301
- Что такое 301 редирект?
- Виды редиректов
- Настройка 301-й переадресации
- Для чего это нужно?
- Встроенные редиректы WordPress
- Что такое редиректы?
- Альтернативные методы переадресации
- HowTo redirect with PHP
- Как проверить редирект страницы
- Использование функции PHP header() для редиректа URL-адреса
- Правила Redirect, RewriteRule и RewriteCond
- Редирект в .htaccess (RewriteEngine)
- Редирект ссылок через htaccess
- Все стандартные редиректы в nginx
- Заключение
Что такое переадресация 301
Permanent Redirect 301 применяется с целью организации постоянной переадресации с неактуального доменного адреса или url отдельной страницы на рабочую версию. Редирект может понадобиться в связи с глобальным переносом сайта на другой домен, техническими изменениями в написании адреса, удалением страниц, необходимостью внутренней и внешней перелинковки. Один из вариантов использования перманентной переадресации – редирект с нескольких доменных имен, созданных в разных зонах, на один актуальный адрес. Грамотное использование редиректа позволяет перемещать контент без потерь в поисковой индексации, сохранить и даже увеличить прежний вес и позицию в выдаче.
Настроить код состояния HTTP 301 можно разными способами:
-
с помощью HTML и PHP;
-
через панель управления или плагины соответствующей CMS;
-
при помощи специальных скриптов (программ);
-
на уровне хостинг-провайдера;
-
внесением соответствующих записей в файлы .htaccess для сервера Apache или web.config для IIS.
Последний способ является наиболее простым и надежным. О нем чуть позже поговорим подробнее.
Что такое 301 редирект?
301 редирект или 301 Permanent Redirect – это постоянная переадресация одного URL-адреса на другой. Само слово «редирект» дословно переводится с английского как «перенаправление».
Фактически это ответ сервера на запрос к нему, и ответ этот имеет код 301, говорящий о том, что адрес запроса был изменен навсегда. Результатом всех этих странных для новичка манипуляций становится то, что мы должны увидеть в браузере какой-то другой конечный адрес.
.htaccess
Если приложить максимум усилий — 301 редиректом возможно решить широкий круг проблем с оптимизацией, и глобально улучшить конверсию сайта. Соответственно, как сделать редирект на другой сайт нужно знать любому SEO специалисту и веб-мастеру.
Главное в этом деле — не забыться и не натворить лишнего, а также помнить о том, что перед каждым добавлением новых редиректов необходимо делать бекап файла .htaccess.
Зачем нужен 301 редирект и в каких случаях его используют?
301 редирект — весьма универсальный инструмент для любого оптимизатора. Он позволяет совершить перенос ссылочного наполнения одной страницы на другую. Чаще всего делают редирект на другой сайт при переезде на другой домен, соединении дублей интернет страниц или перенаправлении с «www» на «без www» и наоборот.
wwwбез wwwпо наследству
301 редирект способен передать:
- индекс цитирования;
- все ссылочное наполнение.
301 редирект не способен передать:
- возраст сайта;
- какие либо фильтры или санкции;
- присутствие в каталогах.
Ко всему прочему, возможен вариант, когда редирект выступает способом добавления в конце ссылки косой черты — слеша. То есть «http://site.com/news» при помощи редиректа изменяют на «http://site.com/news/».
Обобщая, 301 редирект необходим, как для пользователей, так и для поисковых роботов. Он позволяет и тем, и другим распознать, что появился новый сайт, домен или страница, а так же мгновенно переадресовывает их туда.
Кроме всего прочего 301 редирект достаточно часто используется в SEO, так как позволяет показать поисковым роботом, что страница переадресуется навсегда. Ну и, конечно, 301 редирект позволяет без труда перенести позиции старых страниц на новые.
Как настроить 301 редирект?
Решений этой задачи на самом деле множество, все зависит от того какими техническими характеристиками обладает хостинг вашего сайта. Сейчас мы приведем несколько наиболее простых вариантов, как сделать 301 редирект.
Запомните, что все операции производится в файле .htaccess или httpd.conf (для сервера Apache).
Вариант 301 редиректа для переадресации на другой домен:
Redirect 301 / http://www.site.com/index.htm
В данном примере все страницы сайта будут перенаправлены на другой.
301 редирект для одной страницы выглядит так:
Redirect 301 /site1/page1.htm http://www.site2.com/page2.htm
В качестве последнего примера приведем следующее:
Redirect permanent /test http://www.test.com/ Redirect permanent / http://enter.test.com/
Видно, что при попадании пользователя или поискового робота в директорию test он автоматически перенаправляется на «www.test.com», все остальные перейдут на «enter.test.com».
Можно, конечно, использовать готовый скрипт редиректа, которых полно в сети. Однако для успешности данной операции необходимо чтобы на хостинге были включены модули «mod_alias».
Как проверить работает ли 301 редирект?
Самые распространенные ошибки, при которых 301 редирект отказывается работать правильно – это наличие прочих редиректов, мешающих работе.
После того как вы настроили 301 редирект необходимо проверить его на работоспособность. Для этого нужно зайти не только на главную, но и прочие страницы сайта.
Переходя к практике, давайте рассмотрим как проверить 301 редирект.
Допустим, посетитель вводит в адресной строке браузера ссылку «http://primer.com/index.php» и нажимает «ввод». Браузер совершает HTTP-запрос и посылает его серверу, который возвращает HTTP-ответ.
При установленном редиректе, в поле «Location» будет прописан другой адрес страницы, например: «http://primer.com/surprize.php», куда и произойдет переадресация.
Существует много сервисов и плагинов позволяющих проверить работоспособность редиректа.
HttpFox
Плагин HttpFox для браузера Mozilla Firefox построчно фиксирует загрузку страницы, что позволяет отслеживать связки редиректов, а так же порядок и быстроту загрузки интернет страницы.
Надеемся, что данная статья помогла вам сделать редирект на новые страницы сайта без каких-либо проблем.
Удачи Вам!
Виды редиректов
Исходя из того, что такое редирект, можно выделить несколько его видов. Имеющиеся различаются по двум показателям:
- постоянность или временность перенаправления;
- доступность старой страницы после настройки.
Рассмотрим каждый из видов подробнее.
301
301-й можно сравнить с постоянным переездом. Когда вы уезжаете из одного дома в другой и точно не вернётесь в старый.
Перенаправление этим способом настраивается навсегда, а старая страница больше не может участвовать в поисковой выдаче ни при каких условиях. При этом её показатели сохраняются и успешно переходят к новому ресурсу.
Этот вариант идеален, например, если с сайта необходимо удалить дубль — страницу, полностью дублирующую по содержанию ту, на которую идёт настройка. Однако во всех вышеперечисленных случаях он также может быть полезен.
Вариант оформления страницы ошибки 404
Поисковые системы реагируют на 301-й хорошо и сложностей обычно не возникает. Однако, если перенаправление настроено неправильно, пользователь при переходе на страницу получает ошибку 404 (не найдена).
302
Редирект 302 является временным. Возвращаясь к предыдущему примеру с переездом в новый дом, его можно сравнить, например, поездкой на дачу на летние каникулы. Городская квартира при этом остаётся в вашем доступе и вернуться туда можно в любой момент.
Процесс направления со старой страницы на новую настраивается временно, параметры старой страницы остаются привязаны к ней, а не переносятся на новую.
Нередки ситуации, когда при использовании 302-го для перманентного переезда страниц, веб-мастер обнаруживал проиндексированными обе версии. Для поисковых систем это означает полное дублирование страниц, а потому одна из них (чаще всего старая) будет исключена из выдачи.
303 и 307
307-й (Temporary Redirect) для поисковых систем фактически является точной репликой 302-го (Found). Это временное перенаправление трафика на новую страницу с сохранением всех параметров прежней.
Команда, которую получает браузер, если на странице настроен 303-й тип, выглядит следующим образом (документ найден и его можно отобразить, используя GET). В HTTP 1.1 он рассматривается как полная замена 302-го редиректа.
Вообще же основная сфера его использования — необходимость перенаправить пользователя, сделавшего запрос, на другую страницу, которая не содержит точного ответа, но является частичной заменой запрошенной.
Настройка 301-й переадресации
Как настроить 301 редирект
Настройка 301 редиректа
Есть несколько способов проведения редиректа. Какой из них выбрать, зависит от движка сайта.
Через файл .htaccess (альтернатива для Арасhe – httpd.conf). Этот метод популярен из-за своей простоты. При его использовании в папке ресурса создается файл .htaccess. Если он там есть, нужно провести редактирование
При этом важно предварительно сохранить файл (или весь сайт) в исходном виде. Чтобы сделать постоянный редирект, открываем его и в начале прописываем команды, заменив адреса своими.
Переадресация сайта целиком:
Rеdіrесt / httр://novyi-saіt.соm/ – здесь указываем свой новый адрес сайта.
Удаление префикса WWW (переход на адрес без него):
1-я строка – кодовая комбинация – RеwrіtеЕngіnе оn;
2-я строка – RеwrіtуСоnd %{НТТР_НОSТ} ^www.рrіmеr\.соm – здесь указываем первоначальный адрес своего сайта;
3-я строка – RеwrіtеRulе ^(.*)$ httр://рrіmеr.соm/$1 – в этой строке url без префикса.
Перемещение на другую страницу:
Rеdіrесt 3О1 /strаnіса-1.html / strаnіса -2.html
Переход на НТТРS с НТТР:
1-я строка с кодом – RеwrіtеЕngіnе Оn
2-я строка – RеwrіtеСоnd %{НТТРS} оff
3-я строка – RеwrіtеRulе (.*) httрs://%{НТТР_НОSТ}%{RЕQUЕSТ_URI}
Важно учитывать реализацию команды на сервере с операционной системой Apachе и Linux с активацией модуля Mod_rewrite. Можно использовать файл конфигурации hpptd.conf
- При помощи специальных плагинов в CMS. Это также довольно простой способ переадресации. Если сайт построен на WordPress, для редиректа можно использовать Simple 3О1 Redirects, расширение, единственный минус которого заключается в необходимости составлять перечень адресов для перенаправления вручную.
- Через условие РНР. Этот способ подходит в том случае, если есть достаточный объем знаний о РНР и структуре интернет-проекта. Для его применения нужно для сайта на СМS открыть в корне движка index.php и вписать в этот файл:
іf($_SЕRVЕR == «/іndех.рhр») { здесь указывается старый адрес
hеаdеr(«Lоcаtіоn: /»,ТRUЕ,3О1); – в этой строке нужно указать новый url
ехіt()
}
Переадресацию РНР можно провести, отправив заголовки (скрипт):
<?рhр
hеаdеr(«НТТР/1.1 3О1 Mоvеd Реrmаnеntly»); -–команда постоянного редиректа
hеаdеr(«Lосаtіо: http://www. nоvyі-sаіt.соm/nоvаjа-рарса/novaia-stranica.htm»)
еxіt()
?>
- ASP. Прописываем следующее:
<%@ Lаnguаgе=VВScrіpt %>:
<%
Rеspоnsе.Stаtus=»3О1 Mоvеd Реrmаnеntly» – команда редиректа
Respоnse.АddHeаdеr «Lосаtіon», «httр://www.nоvyі-аdrеss.соm»
rеspоnsе.еnd
%>
- ASP.NET. В корневой папке сайта нужно найти web.config и прописать в этом файле такой набор команд:
<sсrірt runаt=»sеrvеr»>
рrіvаtе vоіd Раgе_Lоаd(оbjесt sеndеr, Systеm.ЕvеntАrgs е)
{
Rеsроnsе.Stаtus = «3О1 Mоvеd Реrmаnеntly»
Rеspоnsе.АddНеаdеr(«Lосаtіоn»,»httр://www.nоvyі-аdrеss.соm»)
}
</sсrірt>
- ColdFusion. Прописываем комбинацию:
<.сfhеаdеr stаtusсоdе=»3О1″ stаtustехt=»Mоvеd реrmаnеntly»>
<.сfhеаdеr nаmе=»Lоcаtіоn» vаluе=»httр://www.nоvyі-аdrеss.соm»>
- JSP (Java). Этот способ переадресации подходит, когда нужно внести незначительные коррективы в несложный проект. Можно внести код в один файл и разместить на каждой нужной странице с такими командами:
<sсrірt tyре=»tехt/jаvаsсrірt» srс=»rеdіrесt.js»></sсrірt>
<script type=»text/javascript»>
lосаtіоn=»httрs://yаndех.ru»
</sсrірt>
- CGI-скрипт на PERL. Используем следующее:
$q = nеw СGІ
рrіnt $q->rеdіrесt(«httр://www.nоvyі-аdrеss.соm/»)
- Ruby on Rails. Прописываем комбинацию:
dеf оld_асtіоn
hеаdеrs = «3О1 Моvеd Реrmаnеntly»
rеdіrесt_tо «httо://www.nоvyі-аdrеss.соm/»
еnd
- Nginx. Используем код:
іf ($hоst = ‘www.dоmаіn.соm’ ) {
rеwrіtе ^(.*)$ httр://dоmаіn.соm$1 реrmаnеnt
}
- HTML. Такой способ редиректа подходит для статичных несложных сайтов, на которых нужно изменить только отдельные страницы. Чтобы сделать переадресацию НТМL, нужно внести особый метатег. Например, для перемещения на другой сайт после 5 минут ожидания потребуется такая команда:
<mеtа httр-еquіv=»rеfrеsh» соntеnt=»5;httрs://mеstо-nаznасhеnіyа.рrо»>
Чтобы отправка посетителя на сайт https://mesto-naznacheniya.pro произошла моментально, достаточно заменить значение 5 на 0. Но если сайт крупный, такую переадресацию делать непросто и довольно долго, поэтому стоит выбрать более подходящий вариант.
Для чего это нужно?
Если вам до сих пор не понятна работа и необходимость данного кода, тогда давайте разберем небольшой пример.
Допустим у вас в файле index.php вписан код, который должен срабатывать на каждой странице вашего сайта. Например указание кодировки страниц и вывод окна с какой нибудь рекламой.
Когда пользователь вписывает в адресную строку путь к файла вашего сайта, например mysite/account/login.php, то файл htaccess запускает код. В этом коде он проверяет, существует ли такой файл и если да, то вместе с кодом файла login.php, он запускает код файла index.php.
Если вы не будете использовать данный метод, то вам придется в каждом файле вашего сайта прописывать один и тот же код, открывающий окна с рекламой. И если в дальнейшем вы захотите убрать это окно или отредактировать скрипт окна, вам придется это делать на каждой странице, на которой используется данный скрипт.
На самом деле вы можете указать здесь любой файл, но программисты чаще всего для этого используют файл index.php.
Встроенные редиректы WordPress
Очевидно, что выше описана простая ситуация
На нее достаточно обратить внимание и исправить. Но не всегда бывает так просто
Например, вы сами не настраивали редирект урлов без слеша на урлы со слешом, он вам не нужен. Но, к примеру, WordPress реализует подобный редирект своими средствами. В итоге, при запросе http://site.ru/catalog вы получите такую картину с редиректами.
# curl -I -L http://site.ru/catalog HTTP/1.1 301 Moved Permanently Server: nginx Content-Type: text/html Content-Length: 162 Connection: keep-alive Location: https://site.ru/catalog HTTP/2 301 server: nginx content-type: text/html; charset=utf-8 location: https://site.ru/catalog/ x-powered-by: PHP/7.4.2 x-redirect-by: WordPress HTTP/2 200 server: nginx content-type: text/html; charset=utf-8 vary: Accept-Encoding
Сначала nginx сделал редирект на https, так как вы это настроили у него в конфигурации, а потом wordpress на страницу со слешом на конце. В итоге у вас два редиректа, а надо один. Причем, два редиректа получились не по вашей воле
Если не обратите на это внимание, так и будете с ними жить. По факту, все типовые редиректы лучше сразу реализовывать в одном месте в веб сервере
Что такое редиректы?
Редиректы — это способ перенаправлять пользователей сайтов на URL, отличный от того, что они запросили. Дубли страниц ухудшают ранжирование сайта, а редиректы помогают с ними бороться.Ещё их используют когда нужно создать новую страницу взамен уже существующей и при этом сохранить позиции и трафик. Существует 9 видов редиректов, но в SEO-практике активно применяются лишь три из них:
301 Moved Permanently (постоянный редирект) — указывает, что документ перенесён на новый URL навсегда. Когда SEO-специалисты или разработчики говорят о редиректе, они почти всегда имеют в виду 301 редирект. Старый адрес исчезает из выдачи, его место с сохранением позиций занимает новый.
302 Found, 302 Moved Temporarily (найдено, перемещено временно) — документ перенесён временно, например, переводит пользователя на страницу акции (распродажи), не меняя содержимое старой страницы. При этом в выдаче остается старый адрес страницы, ведь на новый она перемещена временно.
307 Temporary Redirect (временный редирект) — запрашиваемый документ на короткое время доступен по другому URL с сохранением метода передачи запроса (GET, POST) В целом выполняет ту же задачу что и 302 редирект.
Общие советы по настройке редиректов
1. Делайте редиректы только на релевантные страницы, со статусом 200 (OK).Чем более релевантна страница акцептора (та что принимает редирект) странице донору, тем быстрее они склеятся и тем больше веса она передаст.
2. Не используйте редирект там, где лучше поставить rel=canonical
Если контент страниц дублируется, но вам важно оставить страницы доступными для пользователей, используйте rel=canonical вместо редиректа. Например, если есть несколько версий контента (для печати, для мобильных,)
3. Не используйте редиректы для файла robots.txt
Этот совет в большей мере касается ПС Яндекс — для нее важно, чтобы при смене домена или переезде на защищенный протокол старый robots.txt был доступен роботам — так быстрее происходит склеивание доменов
4. Избегайте двух, трёх и более редиректов подряд. Каждый новый редирект — это потеря времени загрузки, лишняя нагрузка на сервер и возможная потеря передаваемого веса страницы.
5. В файле .htaccess вначале используйте переадресации страниц с более высоким уровнем вложенности, например:
- сначала редирект с site.com/category-1/subcategory-1/ на site.com/category-1/subcategory-2/;
- затем с site.com/category-0/ на site.com/category-0;
- и последними — глобальные правила типа редиректа всех страниц без «/» на страницы с «/».
На больших ресурсах с множеством редиректов несоблюдение этого правила ведёт к возникновению страниц с 404 ошибкой.
6. Браузеры кешируют редиректы — чтобы проверить их работу, сбрасывайте кеш или используйте специализированные сервисы.
Важно!Хотя ссылочный вес и передается в полной мере, при массовом применении редиректов, например, при переезде на https, возможно проседание позиций и трафика страниц на 10-15%, с последующим восстановлением в течение 2-4 недель. Некоторые seo-специалисты, чтобы исключить возможность проседания трафика, советуют сначала настраивать 302 редирект, а после появления в выдаче большинства новых страниц — менять его на 301
Сразу предупреждаем, что такое использование 302 редиректа идёт вразрез с рекомендациями Google, но никто не запрещает вам экспериментировать 🙂
Массово проверить статус страниц сайта можно, используя программы для аудита сайта Netpeak Spider, SEO Screaming Frog и сервис Serpstat.
Альтернативные методы переадресации
- Редирект 302. Применяется в случае временной переадресации с одного url на другой. При его использовании поисковая система индексирует все доступные версии сайта или страницы. Объединения ссылочного веса и внутренних метрик на приоритетном ресурсе не происходит.
- 307 Temporary Redirect рекомендуется применять в исключительных случаях. Например, при техническом обслуживании сайта, когда он недоступен некоторое время.
- Обновления Meta Refresh выполняют переадресацию не на уровне сервера, а непосредственно на сайте. Пользователь сталкивается с временной задержкой (обычно около пяти секунд), после чего для перехода на нужную страницу должен принудительно запустить определенную команду. Этот метод часто приводит к падению посетительского интереса и проседанию поисковых индексов.
- Редирект rel=«canonical». Позволяет сохранить доступ посетителям ресурса к контенту дублирующихся страниц. При этом для поисковиков наличие команды canonical на одной из страниц говорит о том, что только она подлежит индексации в поиске.
В большинстве случаев постоянная переадресация является более правильным решением, чем временная. На практике это объясняется просто. Предположим, сайт сменил доменную зону, а затем еще и обзавелся защищенным протоколом https. При настройке временной переадресации в индексе Яндекса и Google по одним и тем же запросам появились три версии сайта с пропорциональным проседанием позиций в выдаче. После настройки редиректа 301 на приоритетный url произошло склеивание дублей, робот вернул сайт в топ выдачи.
Не рекомендуется использовать постоянный редирект при временном переносе сайта или наличии серьезных проблем со старым доменным именем. Если адрес забанен или попал под поисковую фильтрацию, смена дислокации с применением переадресации не поможет избавиться от этих ограничений.
HowTo redirect with PHP
You can easily redirect using following header("Location: ....) syntax:
<?php /* Redirect browser */ header("Location: http://theos.in/"); /* Make sure that code below does not get executed when we redirect. */ exit; ?>
The header() is used to send a raw HTTP/1.1 specification specific header. header() must be called before any actual output is sent, the following example will not work:
<?php $var="something"; echo "Hello world"; echo $var; /**************************************************** * Remember that header() must be called before any actual output is sent, * either by normal HTML tags, blank lines in a file, or from PHP. *****************************************************/ header("Location: http://theos.in/"); exit; ?>
Как проверить редирект страницы
Самый очевидный способ — проверить выполнение в браузере. Перед проверкой не забудьте очистить кэш. Рекомендуется также зайти в браузер в режиме инкогнито.
Внешний вид сервиса проверки редиректов Redirect Checker
Можно использовать и специальные сервисы, которые помогут избежать этих «заморочек», например:
- Redirect Checker;
- Redirect Check;
- Чекер PrCy.
Заключение Без умения настройки редиректа в своём арсенале не обойтись ни одному веб-мастеру. Однако для реализации наиболее распространенных типов перенаправления совсем необязательно иметь глубокие знания по данному вопросу. Новичкам помогут специальные сервисы для генерации кода и проверки готовых.
Использование функции PHP header() для редиректа URL-адреса
Если хотите добавить редирект с initial.php на final.php, можно поместить на веб-странице initial.php следующий код. Он отправляет в браузер новый заголовок location:
<?php $new_url = 'https://example.com/final.php'; header('Location: '.$new_url); ?>
Здесь мы используем PHP-функцию header(), чтобы создать редирект. Нужно поместить этот код перед любым HTML или текстом. Иначе вы получите сообщение об ошибке, связанной с тем, что заголовок уже отправлен. Также можно использовать буферизацию вывода, чтобы не допустить этой ошибки отправки заголовков. В следующем примере данный способ перенаправления PHP показан в действии:
<?php ob_start(); $new_url = 'https://example.com/final.php'; header('Location: '.$new_url); ob_end_flush(); ?>
Чтобы выполнить переадресацию с помощью функции header(), функция ob_start() должна быть первой в PHP-скрипте. Благодаря этому не будут возникать ошибки заголовков.
В качестве дополнительной меры можно добавить die() или exit() сразу после редиректа заголовка, чтобы остальной код веб-страницы не выполнялся. В отдельных случаях поисковые роботы или браузеры могут не обращать внимания на указание в заголовке Location. Что таит в себе потенциальные угрозы для безопасности сайта:
<?php $new_url = 'https://example.com/final.php'; header('Location: '.$new_url); exit(); ?>
Чтобы прояснить ситуацию: die() или exit() не имеют отношения к редиректам. Они используются для предотвращения выполнения остальной части кода на веб-странице.
При PHP перенаправлении на страницу рекомендуется использовать абсолютные URL-адреса при указании значения заголовка Location. Но относительные URL-адреса тоже будут работать. Также можно использовать эту функцию для перенаправления пользователей на внешние сайты или веб-страницы.
Правила Redirect, RewriteRule и RewriteCond
1.1. Директива Redirect
Синтаксис Redirect:
Redirect /откуда http://куда_полный_адрес
Redirect устанавливает прямой редирект с одной страницы на другую.
В пишут код редиректа. Является необязательным параметром. Чаще всего пишут 301, что сигнализирует о постоянном смене адреса страницы.
Например
Redirect 301 /oldpage.php http://site/newpage.php
Можно также писать по другому
RedirectPermanent 301 /oldpage.php http://site/newpage.php или Redirect permanent 301 /oldpage.php http://site/newpage.php
1.2. Директива RewriteRule
Директива RewriteRule устанавливает правила перехода. Синтаксис следующий:
RewriteRule Шаблон Подстановка
- При внешнем редиректе меняется урл адреса в строке браузера — «»
- При внутреннем — не меняет урл адреса в строке браузера — «» или «»
1.3. Директива RewriteCond
Директива RewriteCond определяет условия при котором выполняется правила в RewriteRule.
RewriteCond Сравниваемая_Строка Условие
Например, этими условиями могут быть браузер пользователя, IP-адрес, заголовок и т.д.
1.4. Директива RedirectMatch
Директива RedirectMatch аналогична Redirect с той лишь разницей, что позволяет записывать регулярные выражения.
RedirectMatch Откуда Куда
Редирект в .htaccess (RewriteEngine)
Синтаксис:
Redirect URL-path URL-to-redirect
Необязательный параметр — это три цифры — код редиректа (например, 301). Если не указан, то по умолчанию подставляется 302.
— часть запрашиваемого пользователем (или поисковиком) адреса, которая должна обязательно начинаться со слеша (/)
— полный адрес сайта (и, возможно, часть пути), на который будет осуществляться редирект. Должен быть вида http://site.ru/ — то есть обязательно должен присутствовать протокол (http://) и закрывающий адрес сайта слеш (/).
Если заканчивается не слешем, то редирект будет срабатывать только в случае точного совпадения запрошенного пользователем адреса и .
Если заканчивается слешем, то редирект сработает не только для указанного адреса, но и для всех, которые начинаются на указанный. А к будет добавлена часть адреса, следующая за последним указанным слешем в .
Действие директивы аналогично , но в параметрах URL-regexp и URL-to-redirect можно использовать регулярные выражения.
// должно быть включено (on) для работы RewriteRule RewriteEngine on RewriteRule URL-regexp URL-to-redirect ]
У директивы более широкий спектр применения. Который, в числе прочих возможностей, разрешает ее использования и для редиректа — с указанием в конце строки в квадратных скобках флагов (выполнить немедленно) и (редирект).
Примеры использования:
Redirect / http://yandex.ru/yandsearch?text= # Выполнится 302 редирект (по умолчанию) на поиск в Яндексе символов, введенных в адресную строку после названия Вашего сайта. # То есть если посетитель введет http://ваш_сайт.ru/page, то браузер его перенаправит на http://yandex.ru/yandsearch?text=page Redirect 301 /hello.html http://google.ru/search?q=bye # В случае перехода на страницу http://ваш_сайт.ru/hello.html выполнится 301 редирект на поиск в Гугле фразы "bye". RedirectMatch (.*)\.jpg$ http://хостинг_для_картинок$1.jpg # "Временно" (по умолчанию действует 302 редирект) переадресовываем все запросы jpeg-картинок на какой-либо бесплатный хостинг # или то же самое, но с применением RewriteRule: RewriteEngine on RewriteRule (.*)\.jpg$ http://хостинг_для_картинок$1.jpg
Редирект ссылок через htaccess
Редирект для ссылок можно организовать не только через PHP файл, но и прописать соответствующую директиву Redirect в файле .htaccess. Его вы можете найти в корневой директории сайта. Кроме того на хостинге должен быть включен модуль mod_rewrite (в большинстве случае имеется). Синтаксис для команды следующий:
Redirect URL-path URL
Здесь:
- status : необязательное поле, определяет код возврата, допустимые значения:
- permanent (301 — документ перемещен постоянно)
- temp (302 — документ перемещен временно)
- seeother (303 — смотрите другой)
- gone (410 — убран)
- URL-path : подставная ссылка.
- URL : реальная ссылка
Таким образом для создания партнерской ссылки добавляем в .htaccess конструкцию по типу:
RewriteEngine on Redirect /gosape http://www.sape.ru/12345.php |
Все стандартные редиректы в nginx
Рассмотрю типовой пример, когда у нас одновременно присутствуют следующие редиректы:
- С http на https.
- С www на без www для обоих протоколов.
- Без слеша на конце на урл со слешем.
Наша цель будет реализовать все преобразования url в одном месте и выдать клиенту только один 301-й редирект.
server { listen 443 ssl http2; server_name site.ru; root /web/sites/site.ru/www/; index index.php index.html index.htm; access_log /web/sites/site.ru/log/access.log main; error_log /web/sites/site.ru/log/error.log; ssl_certificate /etc/letsencrypt/live/site.ru/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/site.ru/privkey.pem; location / { rewrite ^(*)$ $1/ permanent; try_files $uri/ /index.php?$args; } location ~* ^.+.(js|css|png|jpg|jpeg|gif|webp|ico|woff|txt)$ { access_log off; expires max; } location ~* ^/(\.ht|xmlrpc\.php)$ { return 404; } location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/var/run/php-fpm/php7-fpm.sock; fastcgi_index index.php; fastcgi_param DOCUMENT_ROOT /web/sites/site.ru/www/; fastcgi_param SCRIPT_FILENAME /web/sites/site.ru/www$fastcgi_script_name; fastcgi_param PATH_TRANSLATED /web/sites/site.ru/www$fastcgi_script_name; include fastcgi_params; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param HTTPS on; fastcgi_intercept_errors on; } location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { allow all; log_not_found off; access_log off; } } server { listen 443 ssl http2; server_name www.site.ru; location ~* ^.+.(js|css|png|jpg|jpeg|gif|webp|ico|woff|txt)$ { return 301 https://site.ru$request_uri; } location / { rewrite ^/(.*)/$ /$1; return 301 https://site.ru$uri/; } } server { listen 80; server_name site.ru www.site.ru; location ~* ^.+.(js|css|png|jpg|jpeg|gif|webp|ico|woff|txt)$ { return 301 https://site.ru$request_uri; } location / { rewrite ^/(.*)/$ /$1; return 301 https://site.ru$uri/; } }
Получилось примерно так. Призываю не копировать бездумно конфиг, а проверить то, что я предлагаю. Хотя я сам внимательно проверил, как мог, но все равно не застрахован от ошибки. На мой взгляд здесь рассмотрены все основные моменты с редиректами. На выходе всегда один 301 редирект, какой бы запрос мы не сделали. При этом все реализовано средствами самого веб сервера, а значит, будет работать максимально быстро.
Заключение
Еще раз поздравляю тех, кто дочитал до конца! К сожалению, схема с uCoz перестала работать. Честно сказать – метод не самый надежный и этого стоило ожидать рано или поздно. Тем не менее, я не зря делаю акцент на редиректе. Большинство доменов CPA-сетей под фильтром у ВК. Это значит, что при переходе по такой ссылке, пользователь увидит от ВК предупреждение вида: “Ссылка на подозрительный сайт”. Чуть позже напишу, как я делаю надежные платные редиректы. Если работаете с трафиком – не забудьте ознакомиться с моим мануалом по продвижению в ВК и другими материалами блога.
С вами был Игорь Кантор. Надеюсь, что статья оказалась для вас полезной. Подписывайтесь на мой Телеграм-канал https://t.me/casecollector – впереди еще много огненного материала! Всем профита!)