Редиректы htaccess, php, для разных задач

Содержание:

Для чего это нужно?

Если вам до сих пор не понятна работа и необходимость данного кода, тогда давайте разберем небольшой пример.

Допустим у вас в файле index.php вписан код, который должен срабатывать на каждой странице вашего сайта. Например указание кодировки страниц и вывод окна с какой нибудь рекламой.

Когда пользователь вписывает в адресную строку путь к файла вашего сайта, например mysite/account/login.php, то файл htaccess запускает код. В этом коде он проверяет, существует ли такой файл и если да, то вместе с кодом файла login.php, он запускает код файла index.php.

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

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

Настройка кириллических доменов .РФ

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

301 редирект с одного домена на другой

RewriteCond %{HTTP_HOST} ^oldmysite\.ru$ 
RewriteRule ^(.*)$ http://newmysite.ru/$1 

Правило для доменов .РФ

RewriteCond %{HTTP_HOST} ^xn-...\.xn--p1ai$ 
RewriteRule ^(.*)$ http://mysite.ru/$1 

Редирект на папки со слешем на конце

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\..{1,10}$
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://mysite.ru/$1/ 

Редирект на папку без слеша — убираем слеш на конце

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule ^(.+)/$ http://www.site.ru/$1 

Редирект со всех страниц кроме определенной папки

Для примера возьмем в исключение папку панели администратора в CMS Bitrix

RewriteRule ^bitrix/ /bitrix/admin/  
RewriteRule ^(.*)$ http://mysite.ru/ 

Редирект с index.php на корень сайта

RewriteCond %{THE_REQUEST} ^{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://mysite.ru/  

Переадресация с поддомена на основной домен

RewriteCond %{HTTP_HOST} ^abc.mysite.ru$  
RewriteRule ^(.*)$ http://mysite.ru%{REQUEST_URI} 

Редирект страницы из различных директорий

Если в разных папках сайта лежит файл с одинаковым названием, то настроить переадресацию этих файлов на один.

RewriteRule /nash-file.php /nash-file.php 

Создаем ЧПУ-копию динамических страниц

Для страницы появится обычный URL без передачи Get-параметров.

RewriteRule ^catalog/okno/?$ /firma/okna/detail.php?ID=123 

Переадресация с https на http

Необходимое правило для решения проблемы с дублями страниц в поисковых системах.

RewriteCond %{HTTPS} "on"
RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI} 

Настройка ответа 403 для спама по REFERER

Данное правило позволяет не пускать на сайт спамный трафик с других сайтов:

RewriteCond %{HTTP_REFERER} ref-spam-site.ru  
RewriteCond %{HTTP_REFERER} another-ref-spam.ru 
RewriteRule .* - 

Обработка ошибки 404 в .htaccess

Для поисковых систем очень важно получать код ответа 404 для несуществующих страниц

ErrorDocument 404 /404-for-me.php

Типы редиректов

Итак, виды редиректов отличаются друг от друга по своему функционалу. Но, существует и второй фактор для их классификации — техническое исполнение редиректа. По нему выделяются такие варианты:

Htaccess-редирект

Htaccess — системный файл, который принадлежит к корневой структуре сайта. Чтобы получить к нему доступ необходимо зайти в панель управления хостинга, на котором размещён нужный веб-ресурс. Для настройки любого вида необходимо разместить в нём строку с соответствующим кодом.

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

где:

  • old-site.ru — домен, с которого происходит редирект;
  • new-site.ru — домен, на который происходит редирект.

Ещё больше полезных материалов про редирект через .htaccess вы найдёте здесь. 

PHP-редиректы

Отличается от вышеописанного тем, что находится на уровне сервера, но со схожим процессом настройки. Вам нужно найти в корневой папке сайта PHP-файл и вписать в него строку кода для соответствующего редиректа.

Этот тип работает медленнее, чем htacces, но, если у вас сотни страниц для которых нужно настроить редиректы и сделать это нужно выборочно, а не для всех подряд, именно PHP может стать оптимальным вариантом.

Подробную инструкцию о том, как сделать PHP-редирект вы можете найти в нашей Базе знаний. 

JavaScript-редирект

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

Когда же его использовать? Например, при переезде на новый сайт, чтобы вывести на экран сообщение типа «сейчас вы будете автоматически переадресованы на наш новый сайт».

Настраивать JavaScript-редирект нужно в исходном коде страницы, с которой осуществляется перенаправление, изменив его текст между тегами <head>-</head>.

HTML-редирект

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

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

Как сделать редирект через .htaccess

Чтобы сделать перенаправление 301 через .htaccess, перейдите в каталог сайта и откройте .htaccess. Если файла ещё не существует, создайте его. После этого добавьте в файл строки кода из подходящей инструкции ниже.

Обратите внимание

Кириллические домены (в зоне .РФ .РУС и др.) необходимо прописывать в коде в формате Punycode: Как перевести домен в Punycode.

301 редирект Битрикс

1С-Битрикс — популярная CMS в которой время от времени необходимо настраивать перенаправление.

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

вариант 1

вариант 2

Где www.site.ru — домен, с которого происходит редирект, а site.ru — домен, на который происходит редирект.

Если вам нужно сделать редирект Bitrix с домена без WWW на WWW, введите комбинацию:

Где www. — домен, с которого происходит редирект, а www. — домен, на который происходит редирект.

Если вы хотите настроить в Битрикс редирект на другую страницу с http:// на https://, пропишите:

301 редирект с одного домена на другой

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

Где:

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

Добавьте в .htaccess следующие строки:

Где site.ru — имя вашего домена.

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

Добавьте в .htaccess следующие строки:

Где site.ru — имя вашего домена.

301 редирект для отдельного IP

Добавьте в .htaccess следующие строки:

Где site.ru — имя вашего домена.

301 редирект с https:// на http://

Добавьте в .htaccess следующие строки:

Где site.ru — имя вашего домена.

301 редирект с http:// на https:// для Linux

Добавьте в .htaccess код из нужного вам примера ниже:

Для всех страниц с http:// на https://

Для всех страниц с http:// на https://, в том числе и с http://www на https://

вариант 1

Если первый вариант не поможет, воспользуйтесь вторым вариантом:

вариант 2

Если все варианты не помогли и возникает циклическая переадресация:

вариант 3

вариант 4

Перенаправление на https только выбранной страницы

В примерах ниже переадресация настраивается для страницы login.php.

вариант 1

или

вариант 2

Перенаправление на https всех страниц, кроме одной

В примере ниже редирект настраивается для страницы test.php.

301 редирект с главной страницы, кроме остальных страниц сайта

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

301 редирект с GET-параметрами

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

Где site.ru — имя вашего домена.

301 редирект с массовой склейкой

Если вам необходимо сделать .htaccess редирект на index php, введите:

Где site.ru — имя вашего домена.

Внимание

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

Теперь вы знаете, как сделать редирект со страницы на страницу через htaccess и сможете настроить его по нашей инструкции.

Виды редиректов

Перед тем как приступить к настройке, определитесь, какой вид редиректа нужен в вашем случае. Ниже мы описали все основные виды редиректов.

300 Multiple Choice (множественный выбор) — это редирект, который сообщает, что по искомому запросу можно перейти не на одну, а на несколько страниц. С его помощью можно настроить перенаправление с основного URL на несколько других страниц, которые похожи по тематике, но отличаются по содержанию. Нередко редирект такого типа встречается на страницах «Википедии». Если какое-то слово или термин имеет несколько значений, вместо одной страницы с определением Википедия выдает страницу со ссылками на объяснение каждого варианта. В зависимости от искомого значения пользователь переходит по нужной ссылке.

301 Moved Permanently (навсегда перемещен) — это постоянный редирект. Используйте этот вид редиректа, если хотите переместить страницу на новый адрес насовсем

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

Индексация страниц с ошибками приводит к снижению SEO-показателей всего сайта.

302 Moved Temporarily (временно перемещен) — это временный редирект. Редирект 302 настраивают в том случае, когда на основной странице временно ведутся те или иные работы. Все файлы копируют и размещают по другому адресу на определенный период. При переходе на страницу с таким редиректом поисковые роботы сразу поймут, что она перенаправлена на другой ресурс только временно. Поэтому при следующем переобходе они вновь попробуют проиндексировать исходную страницу. И так пока контент не «вернётся» на исходную страницу.

305 Use Proxy (использовать прокси) — этот редирект отсылает браузер к использованию прокси-сервера. В этом случае при обращении браузера к странице в ответ приходит адрес прокси-сервера. Это значит, что к ресурсу можно подключиться только с помощью прокси — промежуточного сервера, который является посредником между пользователем и сервером, на котором хранятся файлы сайта. Прокси-подключение настраивают для защиты локальной сети от внешних подключений, экономии трафика (передачи данных в сжатом виде), и другого.

307 Temporary Redirect — временный редирект. Он сообщает поисковому роботу, что страница временно перенесена на другой URL и через некоторое время вновь будет доступна по старому адресу. Этот редирект похож на 302 Moved Temporarily, однако у него есть существенное отличие — 307 редирект сохраняет метод передачи запроса (GET, POST), который указывает поисковикам, что кешировать документ не нужно. Его используют для краткосрочного переезда, например небольших технических работ. Стоит отметить, что иногда проще на пару часов закрыть сайт на технические работы без редиректа.

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

Также существуют 304-й и 306-й редиректы. Однако сейчас эти виды практически никто не использует. Некоторые браузеры даже не умеют интерпретировать код таких перенаправлений.

Самые популярные виды редиректов — 301 и 302. При этом чаще всего для переадресации url используют 301-й редирект. Для его настройки используют разные способы.

Редирект в PHP

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

Синтаксис:

// string - полностью сформированная строка заголовка, который необходимо добавить (без завершающего перевода строки "\n")
// replace указывает, нужно ли заменять заголовки с одинаковыми именами (true), или же добавлять в конец (false)
// http_response_code указывает код http-ответа (300, 301, 302 и т.д.)

void header ( string string ] );

Примеры использования:

header( 'Refresh: 0; url=/error404.html' ); // переадресовать на страницу ошибки немедленно (без задержки)
header( 'Refresh: 5; url=https://www.google.com/' ); // переадресовать на главную страницу Рамблера через 5 секунд после загрузки страницы.
header( 'Location: /', true, 307 ); // перебросить на главную страницу сайта с использованием 307 редиректа.
header( 'Location: /article/page.htm', true, 303 ); // с помощью 303 редиректа переадресовать на внутреннюю страницу сайта.

header( 'Location: http://google.ru/search?q=redirect' ); // с помощью 302 редиректа переадресовывать на поиск в гугле слова redirect (При использовании Location без указания кода редиректа, по умолчанию используется 302-й).

header( 'Location: http://yandex.ru/yandsearch?text=redirect', true, 301 ); // сделать переадресацию с помощью 301 редиректа на поиск в Яндексе слова redirect.

Редирект HTML в PHP:

<?php
echo '<meta http-equiv="refresh" content="5;URL=https://ida-freewares.ru">';

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

header('HTTP/1.1 301 Moved Permanently');
header('Location: http://site.com/');

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

Обеспечиваем безопасность сайта

Файл .htaccess предоставляет большие возможности для защиты сайта от вредоносных скриптов, кражи контента, DOS-атак. Также можно защитить доступ к определенным файлам и разделам.

5. Запрещаем загрузку картинок с вашего сайта

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

Осадите воришек при помощи этого кода:

Заменяете «mysite.com» на адрес вашего сайта и создаете изображение с любым сообщением о том, что красть чужие картинки нехорошо, по адресу . Это изображение и будет показано на стороннем ресурсе.

6. Запрещаем доступ

Целым группам нежелательных гостей с определенных IP-адресов, подсетей, а также вредоносным ботам можно запретить доступ на ваш ресурс при помощи следующих директив в .htaccess.

Для нежелательных User Agents (ботов)

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

Частный случай такого запрета — запрет для поисковых роботов. Если вас почему-то не устраивает правило в robots.txt, можно запретить доступ, например, роботу Google при помощи таких директив:

Для подсети

Вписываем маску сети в строку после «deny from».

Спамные IP-адреса можно вычислить в логах сервера или с помощью сервисов статистики. В административной панели WordPress отображаются IP-адреса комментаторов:

К определенному файлу

Вписываем название файла вместо «myfile.html» в примере. Пользователю будет показана ошибка 403 — «доступ запрещен».

Не лишним будет ограничить доступ к самому файлу .htaccess из соображений безопасности, а также рекомендуем после настройки всех правил поставить на файл права доступа 444.

Для сайтов на WordPress важно ограничить доступ к файлу wp-config.php, т.к. в нем содержится информация о базе данных:

Для пользователей, пришедших с определенного сайта

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

7. Защищаем доступ к определенному файлу или папке

Для начала создайте файл .htpasswd, пропишите в нем логины и пароли в формате user:password и разместите в корне сайта. В целях безопасности пароли лучше зашифровать. Это можно сделать при помощи специальных сервисов генерации записей, например, такого. Следующим шагом добавьте директории или файлы в .htaccess:

Защита паролем папки

Вместо «/pub/home/.htpasswd» укажите путь до файла .htpasswd от корня сервера. Рекомендуем проверить доступ после установки кода.

8. Запрещаем выполнение вредоносных скриптов

Следующая группа директив защищает сайт от так называемых «скриптовых инъекций» — инструмента хакерских атак:

Все попытки причинить вред вашему ресурсу будут перенаправлены на страницу ошибки 403 «доступ запрещен».

9. Защищаем сайт от DOS-атак

Один из способов защиты — ограничить максимально допустимый размер запроса (ограничение отсутствует по умолчанию).

Для этого прописываем в .htaccess размер загружаемых файлов в байтах:

В примере указан размер 10 Мбайт. Если вы хотите запретить загрузку файлов, пропишите число меньше 1 Мбайт (1048576 байт).

Также можно изучить возможности директив LimitRequestFields, LimitRequestFieldSize и LimitRequestLine в официальной документации.

Редирект с протокола http на https.

RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1

Если возникает циклический редирект, то воспользуйтесь этим вариантом:

RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}

Для Битрикс-сайтов на хостинге reg.ru

RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI}

Для сертификатов https c Cloudflare:

RewriteCond %{HTTP:CF-Visitor} ‘»scheme»:»http»‘
# Without Cloudflare:
# RewriteCond %{HTTPS} off 
RewriteRule ^ https://www.example.com%{REQUEST_URI}

RewriteEngine On
RewriteCond %{HTTPS} =off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}

RewriteEngine On
RewriteCond %{ENV:HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}

RewriteEngine on
RewriteCond %{HTTP:HTTPS}  !on
RewriteCond %{REQUEST_URI} !robots.txt
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

Стоит ли использовать 301 редирект при санкциях поисковых систем

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

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

Как настроить 301 редирект на JavaScript (JSP) и ASP

Это метод IT-профессионалами, как и HTML, причисляется к простецким, и используется крайне редко. В случае с JavaScript негативное отношение связано с высокой вероятностью бана поисковыми машинами.

Дело в том, что роботы высчитывают различные скрипты накрутчиков посещаемости, вшитых кодов рекламы, или еще хуже, вирусной активности.

Комбинация JavaScript как раз похожа на эту категорию (для автоматов естественно).

Суть работы директивы сводится в передаче заголовков перед выдачей результатов запроса в поисковике.

Код скрипта для прописывания будет следующий:

<% 
Response.setStatus(301)$ 
Response.setHeader(“Location”,” http//www.newdomain.ru/newdir/newpage.htm”); 
Response.setHeader(“Connection”,”close”); 
%>

Некоторые правила, которыми руководствуются опытные пользователи при написании директив редиректа 301:

• При использовании того или иного кода для работы переадресации необходимо убедиться в том, что сервер, где лежит содержимое сайта, поддерживает такую функцию;

• Для того чтобы снизить необоснованную нагрузку на хостинг, можно прописать перенаправление не через файл .HTACCESS, а путем редактирования файла hpptd.conf.

• После настройки директив редиректа необходимо убедиться в правильной работе всех прописанных скриптов. Для это проводят тестирование (посещение старого сайта).

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

• В принципе не возбраняется экспериментирование. Всегда можно попробовать путем проб и ошибок добиться необходимого результата.

Главное знать основы работы с сайтом и все эти манипуляции проводить в области демо-версии сайта (на своем жестком диске), а уж потом перезалить содержимое по ftp;

• Логично предположить, что использование нескольких типов переадресаций не совсем корректно. Поэтому перед настройкой именно 301 редиректа нужно вычислить (вспомнить) и удалить старые директивы.

Базовый метод настройки редиректа PHP

Большинство руководств скажут вам, что для создания PHP редиректа вы можете просто использовать функцию header() в верхней части ваших страниц. В этом случае вы используете функцию, чтобы отправлять новый URL, например:

header('Location: '.$newURL.php);

Поскольку эта функция должна предшествовать отправке в браузеры ваших пользователей какого-либо HTML или текста, её нужно поместить прямо вверху страницы. Это означает, что она должна стоять перед объявлением <!DOCTYPE>, перед кодом Java и PHP. Затем она отправит пользователей на новый URL-адрес.

Всё предельно ясно, однако функция header() не так проста, как кажется. Итак, давайте посмотрим, как правильно использовать эту функцию.

Die() и Exit()

Во-первых, вы должны использовать модификатор die() или exit() каждый раз, когда используете редирект. Если вкратце, то проблема в том, что сканеры и роботы могут игнорировать заголовки, и поэтому страница, с которой, как вы думали, вы перенаправляете, полностью доступна для них. Другими словами, если вы используете редирект путём отправки нового заголовка, чтобы защитить определённую страницу, это не даёт вам никакой защиты.

Вот почему вам нужно предотвратить обработку остальной части страницы. Для этого добавьте die() или exit() после перенаправления:

header("Location: .$newURL.php");
die();

Относительные и абсолютные URL

Теперь поговорим об относительных и абсолютных ссылках в переадресации. позволяет использовать оба типа, однако, если вы используете относительные редиректы следует быть особенно осторожным. Дело в том, что некоторые конструкторы сайтов объединяют и переименовывают страницы PHP. Это означает, что если вы работаете над своим PHP через конструктор сайтов, все ваши редиректы могут просто поломаться.

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

Коды статусов

Третья проблема стандартных перенаправлений PHP заключается в том, что оператор PHP «location» по умолчанию возвращает код HTTP 302 (англ.). Вам нужно запретить ему это делать, поскольку многие браузеры реализуют этот код совсем не так, как он должен функционировать на само деле: они, по сути, используют команду GET вместо выполнения «настоящего» редиректа.

Поэтому при создании редиректов на PHP рекомендуется указывать возвращаемый код статуса. К сожалению, нет единого мнения, какой код стоит указывать. HTTP 301 указывает на постоянное перенаправление, что может вызвать проблемы при восстановлении исходной страницы. HTTP 303, к сожалению, воспринимается многими браузерами как «другой» и может вызвать проблемы с индексированием вашей страницы в поисковых системах.

Пока этот вопрос остаётся открытым, используйте HTTP 303.

Проверка документации

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

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

Другие методы

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

Есть два основных подхода. Вы можете использовать элемент HTML <meta> для перенаправления из HTML-части вашей страницы или же использовать JavaScript. Первый подход — <meta> будет выглядеть так:

<meta http-equiv="refresh" content="0;url=newpage.php">

Второй подход — с использованием JavaScript — выглядит немного элегантней и более профессионально:

window.location.replace("http://newpage.php/");

Оба варианта будут выполняться немного медленнее, чем перенаправление header(), однако являются более гибкими.

В каких случаях нужно использовать

  1. Похожие доменные адреса — редирект используется, чтобы перенаправить на нужный адрес пользователя, который ввел в строку браузера адрес сайта. Некоторые организации регистрируют ошибочные домены, указывая редирект на другой домен. Например, если указать адрес «googel.com», то произойдет перенаправление на правильный URL. Иногда компании резервируют несколько доменных имен, т. е. ссылки «site.com» и «site.org» перенаправляются на «site.ru».
  2. Переезд сайта на другой домен — применяется при расширении сайта, в результате которого требуется перенаправить трафик на другой домен. Причиной может быть расширение проекта, связанное с увеличением базы товаров или количеством регистраций пользователей, которые увеличивают нагрузку на сервер.
  3. Перенаправление на мобильную версию сайта — современные инструменты позволяют создавать приложения для мобильных устройств, популярность которых стремительно набирает обороты. Если зайти на страницу компании с планшетного ПК, то произойдет автоматическая переадресация на другой сайт мобильной версии.
  4. Хакерская атака — иногда веб-ресурсы подвергаются различным родам хакерских атак. Компании на них реагируют оперативно, устанавливая переадресацию на рабочий сайт.
  5. Изменение структуры интернет-ресурса — при необходимости замены существующей страницы на новую нужно установить редирект, чтобы избежать потери позиций и трафика.
  6. Использование доменных синонимов (алиасов) — применяют для перенаправления без «www» на сайт с «www», а также при использовании нескольких доменных зон (.ru, .com, org и т. д) или сокращения доменного имени.

Настраиваем редиректы для SEO

Как мы уже упоминали, это самый популярный способ использования .htaccess. Перед тем, как настраивать тот или иной вид переадресации, убедитесь, что это действительно необходимо. Например, редирект на страницы со слешем в некоторых CMS настроен по умолчанию. О настройках редиректа для SEO мы писали в блоге.

При настройке 301 редиректов помните о двух правилах:

  1. Избегайте нескольких последовательных перенаправлений — они увеличивают нагрузку на сервер и снижают скорость работы сайта.
  2. Располагайте редиректы от частных к глобальным. Например, сначала переадресация с одной страницы на другую, затем общий редирект на страницы со слешем. Это правило работает не в 100% случаев, поэтому с размещением директив нужно экспериментировать.

1. Настраиваем постраничные 301 редиректы

Это потребуется в следующих случаях:

  • изменилась структура сайта и у страницы поменялся уровень вложенности;
  • страница перестала существовать, но нужно сохранить ее входящий трафик (например, в случае отсутствия товара обычно делают переадресацию на товарную категорию);
  • поменялся URL, что крайне нежелательно, но тоже встречается.

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

  • — адрес страницы от корня, без протокола и домена. Например, .
  • — полный адрес страницы перенаправления, включая протокол и домен. Например, .

2. Избавляемся от дублей

Каждая страница сайта должна быть доступна только по одному адресу. Для этого должны быть настроены:

  • редирект на страницы со слешем в конце URL или наоборот;
  • главное зеркало — основной адрес сайта в поиске.

Сделать это можно при помощи модуля . В его составе используются специальные команды — директивы сложного перенаправления. Первой командой всегда идет включение преобразования URL:

Переадресация на слеш или наоборот

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

Код 301 редиректа на страницы без слеша:

3. Настраиваем главное зеркало

Для начала нужно определиться, какой адрес будет являться основным для поиска. SSL-сертификат давно уже мастхэв. Просто установите его и добавьте правило в .htaccess. Не забудьте также прописать его в robots.txt.

Редирект на HTTPS

Определять, с «www» или без будет главное зеркало, можно несколькими способами:

  • добавить сайт в Яндекс.Вебмастер в двух вариантах, в консоли отобразится информация, какой URL поисковик считает главным зеркалом;
  • проанализировать выдачу и посмотреть, каких страниц сайта больше в индексе;
  • для нового ресурса не имеет значения, с «www» или без будет адрес, выбор за вами.

После того как выбор сделан, воспользуйтесь одним из двух вариантов кода.

Редирект с без www на www

4. Перенаправляем с одного домена на другой

Самая очевидная причина настройки этого редиректа — переадресовать роботов и пользователей на другой адрес при переезде сайта на новый домен. Также им пользуются оптимизаторы для манипуляций ссылочной массой, но дроп-домены и PBN — серые технологии продвижения, которые в рамках этого материала мы затрагивать не будем.

Воспользуйтесь одним из вариантов кода:

или

Не забудьте поменять в коде «mysite1» и «mysite2» на старый и новый домен соответственно.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector