.htaccess — .htaccess как правильно настроить


Содержание

301 Редирект .htaccess

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

Будьте, пожалуйста, внимательны при редактировании файла .htaccess! При сохранении такого файла в кодировке UTF-8 в нём не должно присутствовать BOM-сигнатуры. Для редактирования файла .htaccess и других конфигурационных файлов мы рекомендуем использовать не «Блокнот» Windows, а специальные текстовые редакторы, например Notepad++.

Файл .htaccess располагается в корне сайта.

Его действия распространяются на текущий каталог и на все вложенные каталоги. Т.е. у владельцев сайтов есть возможность воздействовать только на работу своего проекта, не мешая работе всего сервера. Если этот файл отсутствует, то его можно создать с помощью любого блокнота. Главное, чтобы название файла было «.htaccess» — без форматов .txt, .doc и т.д.

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

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

Чтобы иметь возможность работать с редиректами нужно включить модуль ReWriteEngine . Для этого необходимо прописать две строчки кода (желательно в самом верху файла .htaccess):

Options +FollowSymLinks
RewriteEngine On

Разместите эти строки в самом верху файла .htaccess, чтобы иметь возможность работать с директивами модуля mod_write.

Также на хостинге должны быть включены модули mod_alias (для поддержки Redirect, RedirectPermanent и RedirectMatch).

Правила настройки Redirect, RewriteRule и RewriteCond

Директива Redirect в htaccess

Redirect [status] /откуда http://куда_полный_адрес

Redirect устанавливает прямой редирект с одной страницы на другую.

В status пишут код редиректа. Является необязательным параметром. Чаще всего пишут 301, что сигнализирует о постоянном смене адреса страницы.

Важно, чтобы страница «откуда» была прописана в формате без указания полного адреса сайта, но с указанием полного относительного адреса URL начиная со слэша «/» (т.е. с корня сайта). Страницу куда идет редирект нужно писать полностью, т.е. абсолютный адрес страницы URL (т.е. с названием домена и протокола http или https).

Redirect 301 /oldpage.php https://htaccess.ru/newpage.php

Можно также писать по другому

RedirectPermanent 301 /oldpage.php https://htaccess.ru/newpage.php или

Redirect permanent 301 /oldpage.php https://htaccess.ru/newpage.php

Директива RewriteRule

Директива RewriteRule устанавливает правила перехода. Синтаксис следующий:

RewriteRule Шаблон Подстановка [коды]

  • При внешнем редиректе меняется урл адреса в строке браузера — «[R=301,L]»
  • При внутреннем — не меняет урл адреса в строке браузера — «[R=301]» или «[L]»

Директива RewriteCond

Директива RewriteCond определяет условия при котором выполняется правила в RewriteRule.

RewriteCond Сравниваемая_Строка Условие

Например, этими условиями могут быть браузер пользователя, IP-адрес, заголовок и т.д.

Директива RedirectMatch

Директива RedirectMatch в htaccess аналогична Redirect с той лишь разницей, что позволяет записывать регулярные выражения.

RedirectMatch [status] Откуда Куда

Примеры настройки 301 редиректов в htaccess

Ниже даны наиболее используемые правила настройки файла .htaccess для 301-редиректа. Лучше размещать все правила после двух строк:

Options +FollowSymLinks
RewriteEngine On

Комментарий в файле htaccess обозначается символом решётка «#» в начале строки

# Текстовый комментарий, данная строчка не будет обрабатываться.

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

RewriteCond % ^site\.ru$ [NC]
RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]

С домена с WWW префиксом на без

RewriteCond % ^www.site\.ru$ [NC]
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]

Для HTTPS-версии:

RewriteCond % ^80$ [OR]
RewriteCond % =on
RewriteRule ^(.*)$ https://site.ru/$1 [R=301,L]

Стандартный 301-редирект с одной статической страницы на другую

Redirect 301 /was.php http://www.site.ru/new.php

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

В ряде случаев полезен редирект через RewriteRule

RewriteRule ^dir /dir-new/$1 [R=301,L]

Настройка 301-редирект для страницы с GET параметрами

Скажем, адрес страницы имеет вид: http://www.htaccess.ru/dir/index.php?IBLOCK_ >

RewriteCond % ^IBLOCK_ >
RewriteRule ^dir/index\.php$ /new/sef/? [R=301,L]

Если один (или несколько) из GET параметров не задан(ы) или может иметь произвольное значение (в нашем примере это SECTION_ID), можно использовать следующий код:

RewriteCond % ^IBLOCK_ >
RewriteRule ^dir/index\.php$ /new/sef/? [R=301,L]

Убираем все GET-параметры после знака вопроса (?)

RewriteRule (.*) $1? [R=301,L]

Располагать после: RewriteBase /

301-редирект со страницы без заданного параметра в корень

Если адрес имеет следующий вид: http://www.htaccess.ru/?abc то для редиректа подойдет последовательность строчек:

RewriteCond % ^abc$ [NC]
RewriteRule ^$ /? [R=301,L]

301-редирект для конкретного файла, а не целой папки

Если в файле htaccess требуется настроить редирект только для адреса http://www.htaccess.ru/dir/, но при этом чтобы страница http://www.htaccess.ru/dir/index.php?IBLOCK_ >

RewriteRule ^dir/$ http://www.htaccess.ru/new-dir/ [R=301,L]

Как быть с доменами в зоне РФ?

Для доменов в зоне РФ действуют все те же правила, но только все кириллические символы необходимо заменить на альтернативный код (он на латинице). В частности, сама зона .рф преобразуется в .xn--p1ai.

301-редирект с домена на домен

RewriteCond % ^old-site\.ru$ [NC]
RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]

И для домена в зоне РФ:


RewriteCond % ^xn-. \.xn--p1ai$ [NC]
RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]

Настройка редиректа на папки со слешем в конце /

Настройка редиректа на папки без слеша (убираем слеш в конце)

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

RewriteCond % ^si-te\.ru$ [NC]
RewriteRule ^(.*)$ http://www.site.ru/si-te/ [R=301,L]

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

RewriteRule ^bitrix/ /bitrix/admin/ [L,R=301]
RewriteRule ^(.*)$ http://www.newsite.ru/new/ [L,R=301]

Редирект всех файлов в папке на заданный файл

RewriteRule ^dir(.*)$ /new-file.php [L,R=301]

Редирект файлов из заданной папки кроме, определенного файла

RewriteRule ^dir/no-file.html /no-file-new.html [L,R=301]
RewriteRule ^dir(.*)$ /all.php [L,R=301]

Смена страниц с html расширения на php расширение

RedirectMatch 301 (.*)\.html$ http://www.new-site.ru$1.php

Перенос картинок / изображений из папки /img/ на поддомен

RewriteRule ^img/(.+)\.jpg$ http://img.domain.ru/$1.jpg [R=301,L]

Задание типа индексной страницы (php, html, htm и другие)

Указывается порядок загрузки типов индексного файла, лежащих в корне каталога.

DirectoryIndex index.html index.php index.htm index.shtml

Редирект с индексной страницы php на саму папку (корень)

RewriteCond % ^[A-Z]<3,9>\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://www.site.ru/ [R=301,L]

Для всех индексных страниц на сайте:
RewriteRule ^(.*)index\.php$ http://www.site.ru/$1 [R=301,L]

Редирект с поддомена на основной домен второго уровня

RewriteCond % ^test.site.ru$ [NC]
RewriteRule ^(.*)$ http://site.ru% [R=301,NC,L,QSA]

Редирект для заданного файла в различных директориях (папках)

RewriteRule [^abc]/unique-file.html /unique-file.html [R=301,L]

Код позволяет поставить 301-редирект со всех папок вида http://htaccess.ru/***/uniqe-file.html на один файл в корне /unique-file.html. Бывает полезен при переделке сайта и изменении ссылок.

Если требуется создать ЧПУ-копию какой-либо динамической страницы, то это можно также реализовать с помощью .htaccess.

RewriteRule ^testovyi/test/?$ /studio/news/detail.php? >

Код позволяет создать копию страницы с относительным адресом /studio/news/detail.php? >

301-редирект с HTTPS-версии на HTTP

Позволяет устранить наличие дублей URL с HTTPS в индексе поисковых систем.

Перенос сайта на версию с HTTPS (для всех страниц)

RewriteCond % ^80$ [OR]
RewriteCond % =on
RewriteRule ^(.*)$ https://htaccess.ru/$1 [R=301,L]

Настройка 403 кода ответа сервера для реф-спама (301-редирект для спама по REFERER) для списка ресурсов

RewriteCond % ref-spam-site.ru [NC,OR]
RewriteCond % another-ref-spam.ru [NC]
RewriteRule .* — [F]

Настройка позволяет отклонить спамный реферальный трафик с ряда ресурсов по заголовку HTTP_REFERER.

Указание пути к файлу 404 ошибки с помощью .htaccess

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

ErrorDocument 404 /404-for-me.php

! Все правила выполняются в прямом порядке их следования в файле .htaccess и правило, написанное позже, и будет выполняться позже.

! Для сайтов, на которых используется не сервер Apache, аналогичные 301-редиректы легко настраиваются с помощью PHP.

header(«HTTP/1.1 301 Moved Permanently»);
header(«Location: http://www.htaccess.ru/dir/»);
exit();
?>

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

Если требуется настроить редирект только для некоторых USER_AGENT’ов, а не для всех пользователей

RewriteCond % (iPad|ipad|iphone|iPhone|ipod|iPod|android|midp|j2me|symbian|series\ 60|symbos|windows\ mobile|windows\ ce|ppc|smartphone|blackberry|mtk|bada|windows\ phone) [NC]
RewriteRule (.*) http://mobile.htaccess.ru/ [L,R=301]

Если требуется настроить редирект для всех поисковых роботов (представлен список их USER_AGENT’ов)

RewriteCond % !(accoona|ia_archiver|antabot|ask\ jeeves|baidu|dcpbot |eltaindexer|feedfetcher|gamespy|gigabot|googlebot |gsa-crawler|grub-client|gulper|slurp|mihalism|msnbot|worldindexer |ooyyo|pagebull|scooter|w3c_validator|jigsaw|webalta|yahoofeedseeker |yahoo!\ slurp|mmcrawler|yandexbot|yandeximages |yandexvideo|yandexmedia|yandexblogs|yandexaddurl|yandexfavicons |yandexdirect|yandexmetrika|yandexcatalog|yandexnews |yandeximageresizer) [NC]
RewriteRule (.*) http://no-search.site.ru/ [L,R=301]

Несколько простых редиректов

Редирект с www.htaccess.ru/component/content/?view=featured на www.htaccess.ru/

RewriteCond % ^view=featured$ [NC]
RewriteRule ^component/content/$ /? [R=301,L]

Редирект с www.htaccess.ru/index.php? >

RewriteCond % ^ >
RewriteRule ^index\.php$ /? [R=301,L]

Синтаксис для регулярных выражений файла htaccess

. — Точка заменяет произвольный символ.
[abc] — обозначает перечень символов, совпадающих с буквами a, b, или с.
[^abc] — перечень символов, которые не входят в указанных диапазон. Совпадёт с любым символом, кроме a, b, или с.
* — означает, что предшествующий символ может повторяться (0 или более раз).
[abc]* — команда найдёт идущие подряд символы из заданного набора.
[^abc]* — с точностью до наоборот.

.* — заменяет абсолютно любой набор символов. «.*» — найдёт все подстроки между кавычками.
^ — начало строки (в том случае, если используется в начале выражения).
$ — обозначает конец строки.

\w — буква, цифра или подчёркивание _.
\d — заменяет любую цифру.
\D — заменяет любой символ, но не цифру.
[0-9] — заменяет любую цифру.
[a-z] — любая буква от a до z (весь латинский набор символов) в нижнем регистре.
[A-Z] — любая буква от A до Z в ВЕРХНЕМ регистре.
[a-zA-Z] — любая буква от a до Z в любом регистре.
[a-Z] — то же самое.

Как настроить фаил .htaccess

СИНТАКСИС ФАЙЛА HTACCESS

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

Общий синтаксис директив очень прост, это пары команд и их опций, разделенных пробелом, например:

Команда параметр1 параметр2 флаги

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

Зайдите на рабочий стол cPanel и зайдите в раздел » Диспетчер файлов «

Перейдите в папку public_html и создайте фаил с именем » .htaccess «

Создайте нужную папку и фаил .htaccess в папке public_html или выше.

Включите отображение скрытых файлов, в разделе » Настройки » справа, сверху.

И отредактируйте файл .htaccess правой клавишей мыши нажав на файл и выбрав Edit


НАСТРОЙКА ДОСТУПА HTACCESS

Довольно часто htaccess используется для управления доступом к папке. Для управления доступом используются три команды:

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

Затем с помощью директивы allow или deny мы разрешаем или запрещаем доступ к папке с определенных адресов. Например, чтобы запретить все необходимо добавить в htaccess:

Order deny,allow
Deny from all

Но мы также можем разрешить доступ только с нужной подсети или IP адреса:

Order deny,allow
Deny from all
Allow 192.168.0.

Для блокировок IP адресов вы можете использовать возможности cPanel

Если указано deny,allow, то проверка будет выполняться в таком порядке. Сначала все директивы deny, затем все директивы allow, и если ни одно из условий не подошло, то запрос пропускается.При allow,deny такой запрос будет по умолчанию отклонен. Например, предыдущий пример можно написать так:

Order allow,deny
Allow 192.168.0.

МОДИФИКАЦИЯ URL В HTACCESS

Наиболее часто htaccess используется для модификации URL во время выполнения или редиректов. За эту функциональность отвечает модуль mod_rewrite и обычно он активирован в большинстве конфигураций Apache.

Модификация URL в htacces выполняется с помощью трех директив, это RewriteBase, которая указывает префикс адреса, RewriteCond проверяет соответствие, и RewriteRule — изменяет URL в соответствии с регулярным выражением если все правила соответствия подходят.

Сначала нужно включить Mod_Rewrite, на случай если модуль еще не активен:

Укажем, что в качестве префикса для URL нужно использовать корень:

И будем автоматически заменять URL адреса с index.html на index.php, обратите внимание, что исходный URL — это путь к запрашиваемому файлу относительно расположения файла htaccess:

RewriteRule index.html /index.php

Для более эффективной замены можно использовать регулярные выражения они состоят из специальных символов и переменных и обычных символов и цифр. Рассмотрим основные специальные символы:

  • ^ — начало строки;
  • $ — конец строки;
  • . — любой символ;
  • * — любое количество любых символов;
  • ? — один определенный символ;
  • [0-9] — последовательность символов, например, от 0 до 9;
  • | — символ или, выбирается или одна группа, или другая;
  • () — иcпользуется для выбора групп символов.

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

  • % — поле User-Agent, которое передает браузер пользователя;
  • % — IP адрес пользователя;
  • % — запрашиваемый URI;
  • % — параметры запроса после знака ?.

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

RewriteEngine On;
RewriteBase /;
RewriteRule ^(.*)\.html$ $1.php

Директива RewriteCond дает еще больше гибкости, вы можете выбрать к каким адресам стоит применять модификацию, например, будем переопределять данные только для версии с www:

RewriteBase /;
RewriteCond % ^www.site.ru$
RewriteRule ^(.*)\.html$ $1.php

Таким образом, вы можете выполнять любые преобразования ваших URL без фактических редиректов куда-либо. Но дальше мы рассмотрим как делать редиректы.

НАСТРОЙКА РЕДИРЕКТОВ В HTACCESS

Более подробно про редирект для SSL с http на https смотрите тут.

Подробная информация про редиректы тут. Так же вы можете использовать возможности cPanel для более простого управления редиректами.

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

Самый простой редирект можно выполнить без mod_rewrite, с помощью такой строки:

Redirect 301 /index.html http://www.site.ru/index.php

Но обычно нужны перенаправления с более широким действием. Все выглядит очень похоже, только теперь мы используем флаг [NC] чтобы не учитывать регистр, [L] для прекращения обработки и [R] — для редиректа. Например, перенаправление htaccess с версии без www на домен с www:

RewriteCond % ^site\.ru$ [NC]
RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]

Значение R=301 означает код редиректа, который будет возвращен клиенту, можно использовать 301, 302 и т д. Редирект htaccess с домена www на домен без префикса будет выглядеть так:

RewriteCond % ^www.site\.ru$ [NC]
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]

Таким же образом можно сделать переадресацию:

RewriteRule ^старый_адрес /новый_адрес/$1 [R=301,L]

Редирект с http версии на https:

RewriteCond % ^80$ [OR]
RewriteCond % =on
RewriteRule ^(.*)$ https://site.ru/$1 [R=301,L]

НАСТРОЙКА СТРАНИЦ ОШИБОК В HTACCESS

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

Настройка htaccess для этого пункта будет очень полезной. Вы можете использовать директиву ErrorDocument. С помощью нее можно задать html страницы для ошибок 4хх и 5хх. Например, для 404:

ErrorDocument 404 http://site.ru/error/404.shtml
ErrorDocument 403 http://site.ru/error/403.shtml
ErrorDocument 401 http://site.ru/error/401.shtml
ErrorDocument 500 http://site.ru/error/500.shtml

Если страницы ошибок не срабатывают, смотрите информацию тут.

КЭШИРОВАНИЕ В HTACCESS

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

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

Цукерберг рекомендует:  Сниппеты гамбургер-меню

Сначала активируем модуль и устанавливаем период кэширования по умолчанию:

ExpiresActive On
ExpiresDefault «access plus 1 month»

Теперь мы можем настроить кэширование для каждого mime типа файлов:

ExpiresByType text/html «access plus 1 month 15 days 2 hours»
ExpiresByType image/gif «access plus 5 hours 3 minutes»
ExpiresByType image/x-icon «access plus 2592000 seconds»

В первой строке мы указываем, что страницы html нужно считать годными на один месяц 15 дней и два часа с момента загрузки. Доступны такие типы файлов:

  • image/x-icon;
  • image/jpeg;
  • image/png;
  • image/gif;
  • application/x-shockwave-flash;
  • text/css;
  • text/javascript;
  • application/javascript;
  • application/x-javascript;
  • text/html;
  • application/xhtml+xml;

Чтобы быть уверенным что эта конструкция не вызовет ошибок заключите ее в if:

СЖАТИЕ ФАЙЛОВ В HTACCESS

Для сжатия в Apache можно использовать модуль deflate. Так же вы можете использовать возможности Cpanel, подробно тут.

Здесь достаточно просто перечислить mime типы файлов, которые нужно сжать. Например:

AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/css text/javascript application/javascript application/x-javascript

Вы также можете заключить конструкцию if, чтобы проверить поддерживается ли этот модуль:

Закрытие каталогов паролем

Используйте раздел cPanel

Кодировка

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

Если Вам нужна windows-1251, то тогда так:


Версия PHP в нужной папке и изменение обработчика по типу файла

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

Сохраните и в этой папке и выше по директориям у вас будет PHP 3 и будут обрабатываться .html файлы как php.

Если вам нужны другие версии. То используйте нужную строку

Настройка 301 редиректа в файле .htaccess и другими способами

Содержание:

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

Правильно сделать такое перенаправления поможет постоянный редирект или 301 Redirect. Что это такое и как настроить расскажем в этой статье.

Что такое редирект 301

Редирект — это процесс, при котором пользователь перенаправляется с неактуальной страницы на актуальную. Это может быть http и https или адрес с/без www. Редирект может выполняться как на сервере, так и в браузере. Но первый вариант считается предпочтительным, так как серверный редирект не замедляет загрузку страниц.

Permanent Redirect 301 («301 редирект», «постоянный редирект», «код состояния HTTP 301» или «301 редирект страницы») – один из двух наиболее распространённых видов редиректа, наряду с Temporary Redirect 302. Этот ответ сервера на запрос браузера или поисковой системы означает, что произошла перманентная переадресация страницы. Она больше не доступна по текущему адресу, так как переместилась на новый адрес навсегда. Её прежний url стал недействительным, а вес с него переместился на новый адрес.

Для чего он нужен

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

Также полезно знать как настроить редирект при следующих обстоятельствах:

  1. Переезд сайта на новый адрес. Нужно настроить перенаправление, чтобы все запросы к old_site.com перенаправлялись на new_site.com .
  2. Установка SSL-сертификата. Чтобы запросы к страницам, которые начинаются на http, перенаправлялись на адреса с префиксом
  3. Смена URL страницы. Это может быть связано с переходом на другую CMS или SEO-оптимизацией. Нужно, чтобы с example.ru/1hdkr5 был настроен редирект на example.ru/page_adress .
  4. Перенос разделов на субдомены. Было www.example.ru/example , а нужно example.site.ru .
  5. Для аккумуляциитрафика с онлайн-бренда, расположенного в разных доменных зонах. Вебмастер покупает домены example.com , example.ru , example.net , example.org и example.biz и на четырех последних сайтах настраивает редирект на example.com .
  6. Для быстрого перехода пользователя на мобильную версию ресурса со смартфонов и планшетных устройств.

Способы настроить редирект 301

  • Плагины для CMS. Особенно часто данный способ применяется для настройки 301 редиректа в WordPress.
  • Настройка через PHP. Редирект осуществляется через задания дополнительного условия в PHP-скрипте. При обращении к корневому файлу php браузер получает указание открыть одну страницу вместо другой.
  • Настройка при помощи HTML. Используется в случае, если необходимо изменить лишь одну страницу на статическом сайте. Редирект происходит путём добавления специальной метки (тега), в заголовок html-документа.
  • JavaScript — операция через браузер. Скрипт загружается в ПО, это более медленный способ. Работает только при включенном JavaScript в браузере. Используются преимущественно для редиректа с задержкой, когда сначала посетитель сайта видит страницу с обратным отсчетом и текстом. Для настройки в тег добавляется скрипт.
  • Изменение файла .htaccess, отвечающего за дополнительную конфигурацию в серверах на Apache. Удобнее всего это сделать через панель управления хостингом.

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

Настройка 301 редиректа в .htaccess

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

Для настройки 301 редиректа в файле .htaccess чаще всего применяют одну из трёх директив: Redirect, RedirectMatch или RewriteRule. Директивы относятся только к папке, где размещен .htaccess, а оттуда распространяются на дочерние папки.

Найти файл можно через панель управления хостинга (Cpanel, ISPmanager), либо использовать FTP-клиент. При любом варианте, нужно включить отображение скрытых файлов.

Предварительная подготовка

  1. Для создания 301 редиректа перейдите в панель управления вашего сайта.
  2. Проверьте наличие .htaccess файла в корневом каталоге сайта ( public_html ). Если файл отсутствует, создайте его.
  3. Рекомендуем все условия редирект записывать в блоке IfModule дабы избежать ошибок при выполнении файла htaccess.
  4. Перед тем как начать прописывать правила перенаправления, необходимо включить механизм преобразований (RewriteEngine), при помощи команды:
  5. Хостинги применяют по умолчанию 302 или любой другой 3xx редирект, В связи с этим в правилах используются флаги. Рекомендуем дописывать в своих правилах [R=301,L].

Далее разберём наиболее распространенные варианты 301 редиректа через .htaccess.

Склейка зеркал сайта (www / без www)

Сайты http://name.site и http://www.name.site для поисковых систем являются разными. А по факту это разные адреса одного сайта.

В поисковой системе сайт по одному адресу будет проиндексирован, а по второму адресу сайт будет зафиксирован как дубль, что может повлиять на продвижение ресурса. Для избегания дублей необходимо сделать так называемую «склейку» сайта, то есть прописать 301 редирект в .htaccess.

Если изначально в индекс поисковой системы попала версия «с www», в файл .htaccess добавляется редирект на «без www»:

Если произошла обратная ситуация и необходима переадресация с без «www» на «www», то в файл прописывается:

Редирект с http на https

Для всего сайта

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

Если данная конструкция не сработает, попробуйте другой вариант:

Если циклическое перенаправление на страницах осталось, попробуйте такой вариант:

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

В результате пройдет перенаправление на https всех пользователей и поисковых систем, SEO значения при этом сохранятся.

Постранично

Бывают случаи, когда необходимо провести редирект на https всех страниц, кроме одной. В этом случае используют постраничный редирект:

Для одной страницы

Для редиректа с http на https одной страницы (например page.php), в файл добавьте следующую конструкцию:

Редирект с https на http

Если необходимо сделать 301 редирект всего сайта с https на http, в файл прописывается следующее:

Изменение домена

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

Редирект на страницу с другим url (без параметров)

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

Редирект для url (с параметрами)

В случае когда адрес содержит параметр (например, http://name.site/articles.php?section=1 , где параметром является « section=1 » ), то прописывают следующую конструкцию:

Редирект с index.php на главную

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

Редирект со страниц со слешем на без слеша (для всего сайта)

Для избегания дублей в файле .htaccess используют следующую конструкцию:

Или более короткий вариант:

Редирект со страниц без слеша на слеш (для всего сайта)

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

301 редирект с 404 Not Found

Код 404 Not Found (страница не найдена) присваивается удалённой или несуществующей странице на сайте, а также часто возникает при попутке неправильно ввести url-адрес. Создание постоянного перенаправления с таких страниц актуально для контентных сайтов и крупных интернет-магазинов, где страницы часто удаляются по естественным причинам. Тогда возникает потребность перенаправить посетителей на одну из главных страниц сайта, чтобы они не уходили с ресурса, при виде ошибки.

301 редирект для страниц 404 Not Found сделать совсем несложно. Например, этот код перенаправит со всех 404-страниц на главную сайта:


Однако, делать такие редиректы в массовом порядке не рекомендуется, так как это может испортить SEO-статистику всего ресурса.

Финальный вид файла .htaccess

Пример файла htaccess, после добавления в него редиректов.

Постоянный редирект для Nginx

Этот веб-сервер наиболее часто используется в VPS-хостинге в связке с сервером Apache. В нем 301 редирект настраивается добавлением строк в конфигурационном файле nginx.config в секции server.

C www на без www

Без www на с www

После сохранения изменений в файле нужно перезапустить сервер выполнением команды « service nginx restart ».

Редирект для PHP

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

  1. Загрузите файл index.php на жесткий диск.
  2. Сгенерируйте код.
  3. Вставьте код в текстовый файл, сохраните его и загрузите на сервер.
  4. Укажите основной URL в настройках сайта.

Редирект 301 в разных панелях управления хостингом

Cpanel

Нужно перейти в блок «Домены» => «Перенаправления». В появившемся окне выполнить следующее:

  • в строке «Тип» выбрать «Постоянный 301»;
  • в строке «https://www» из выпадающего списка выбрать домен сайта (например, example.ru);
  • в строке «Перенаправляет на» указать для домена адрес http://example.ru;
  • в блоке «Перенаправление www» поставить галочку напротив «Перенаправлять только с www»;
  • сохранить изменения кликом на «Добавить».

ISPmanager

В этой панели можно править файлы nginx.config или .htaccess, но есть в панели и встроенный механизм переадресации. Например, для настройки редиректа на https/http, нужно снять галочку с соответствующего пункта в разделе «WWW-домены».

Особенности редиректа для популярных CMS

WordPress

Для самой массовой CMS существуют десятки плагинов для создания постоянного редиректа. Наиболее популярные среди них: Redirection, Simple 301 Redirects, Quick Page, SEO Redirection и Safe Redirect Manager.

Для примера, разберём перенаправление через плагин Redirection. Его настройка производится через консоль сайта во вкладке «Инструменты» или через раздел плагинов. Чтобы сделать переадресацию, достаточно заполнить два поля — Source URL и Target URL. Соответственно, в первой графе будет указан старый адрес, во второй — новый, без или с www.

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

OpenCart

Для Opencart редактируется файл .htaccess. Код переадресации выглядит так:

Битрикс

Для перенаправления на новую страницу достаточно отредактировать файл .htaccess, внеся в него такой редирект:

Joomla

В панели администратора этой CMS нужно перейти в раздел «Компоненты» => «Перенаправление». В окне можно настраивать правила редиректа для различных страниц, а также отслеживать страницы с битыми ссылками и перенаправлять их на корректные адреса.

MODX

Для гибкой настройки переадресации стоит использовать плагин Redirector.

Автоматическое создание кода

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

Серверы для генерации кода

  • Seomagnifier — 301 для www.
  • 301 Redirect Code Generator Tool — для доменов и страниц.
  • Generate .htaccess— для страниц, разделов сайтов, доменов.

Циклическое перенаправление

Одна из самых распространённых проблем при настройке 301 редиректа — вероятность создания не одинарного перенаправления, а целой цепочки редиректов. Это может быть вызвано некорректной настройкой файла .htaccess, плагина CMS или прямым действием вируса. В очень вероятной перспективе такие «цепочки» приводят к появлению циклического редиректа — ошибки с кодом «ERR_TOO_MANY_REDIRECTS».

Обнаружить циклическое перенаправление помогут бесплатные онлайн-сервисы проверки редиректа. Среди наиболее популярных:

Можно также установить специальные браузерные расширения для Google Chrome и Mozilla Firefox.

Действия при циклическом редиректе

  1. Если ошибка возникла в процессе настройки. Следует проверить корректность соблюдения правил работы 301 редиректа для конкретных адресов, по которым выдаётся ошибка.
  2. Если циклический редирект вызван вирусом. Когда зацикливание возникает при попытке открыть любой адрес на сайте, выход может быть один — откат к последней работоспособной версии, сохранённой в бекапе.
  3. Если зацикливание вызвано слишком длинной цепочкой редиректов (более пяти). Нужно сократить цепочку перенаправлений до одного шага.

Как узнать, что переадресация работает правильно

Проверить редирект лучше всего обычным тестированием. Нужно ввести в адресную строку браузера www.example.ru и нажать Enter. Если все правильно, то должен открыться сайт по адресу example.ru.

Для более точной информации можно использовать онлайн-сервисы отслеживания. С ними можно работать «в 1 клик» — достаточно просто вставить ссылку на интересующую страницу.

Для примера, разберём работу в сервисе Redirect Checker. После ввода ссылки перенаправления при нормальной работе внизу появится надпись «Everything seems to be fine», то есть «все работает». Сервис автоматически проверит редирект и сообщит, если он работает некорректно. Если переадресация не действует, пользователь увидит такие сообщения: «Редирект для домена больше не работает» или «Перенаправление не настроено».

Заключение

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

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

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

.htaccess — .htaccess как правильно настроить?

Друзья, помогите, не могу разобраться с правильной настройкой .htaccess

Задача следующая:

Настроить следующую логику обработки:
* www.example.ru → example.ru (301 редирект)
* example.ru/page.html → example.ru/page (вот тут настроить нужно редирект или рерайт url, чтобы расширение не указывалось в конце строки)
* example.ru/page/ → example.ru/page (соответственно редирект или рерайт страниц со «/» на конце на страницы без «/»)

В конечном счета, сам сайт должен быть доступен по адресу example.ru, а странички по адресу example.ru/page → без слеша и расширения на конце.

Возможно ли подобное решить одним редиректом, а не несколькими последовательными?

Файл на гитхабе → https://github.com/dmitriyfourier/strtgst-site/blob/htacces-structure/.htaccess
Буду благодарен за пул реквест и правки → за рабочее решение закину плюшек на яндекс деньги.

Я правильно понимаю, что rewrite — исправляет отображение url в строке, а redirect — переадресовывает на другой адрес.
Есть ли где-то на GeekBrains уроки/курсы/вебинары по htaccess?

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

Время чтения: 16 минут Нет времени читать? Нет времени?


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

Что такое редиректы и зачем они нужны

Редирект — перенаправление пользователя с одного URL на другой. Например, при переходе по ссылке http://texterra.ru/blog/ браузер автоматически перенаправляет пользователя на URL https://texterra.ru/blog/.

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

В данном случае донор – страница, с которой перенаправляются пользователи. Акцептор – страница, на которую направляются пользователи.

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

  • Перенаправление с http на https. Пример указан выше.
  • Перенаправление с URL с www на URL без www и наоборот. При переходе по ссылке https://tinkoff.ru браузер перенаправляет пользователя на https://www.tinkoff.ru. При переходе по ссылке https://www.vc.ru браузер перенаправляет посетителя на https://vc.ru/.
  • Переезд сайта на другой домен. Пару лет назад коллеги из популярного издания отказались от названия «Цукерберг позвонит» и настроили редирект с адреса http://siliconrus.com на https://vc.ru/.
  • Перенаправление трафика с одной страницы сайта на другую. Например, если в интернет-магазине нет какого-то товара, он может перенаправить трафик на страницу похожего продукта.
  • Перенаправление пользователей на мобильную версию сайта. Если владелец ресурса использует для адаптации к мобильному трафику только мобильную версию сайта, он настраивает редирект мобильных пользователей с www.example.au на www.m.example.au.

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

Какие бывают виды редиректов и когда их используют

Для пользователя все редиректы одинаковы: при попытке перейти по одному URL они попадают на другой URL. Обычно интернет-серферы даже не замечают, что браузер перенаправил их с одного адреса на другой.

Браузеры и роботы поисковых систем определяют вид редиректа по коду состояния HTTP. Перенаправления могут иметь разный HTTP-статус: 301, 302, 303, 307. Рассмотрим каждый подробнее.

Редирект 301

Это самый распространенный вид перенаправления. HTTP-статус 301 значит, что ресурс навсегда перемещен с запрошенного URL на новый. После получения ответа 301 браузер делает новый запрос и перенаправляет пользователя на актуальную страницу.

Если вы используете редирект 301, авторитет и ссылочный профиль старой страницы передаются на новую. Например, не бойтесь потерять вес входящих ссылок при переводе сайта на безопасный протокол соединения. Корректный редирект 301 с http на https сохраняет эту характеристику ресурса и его конкретных страниц.

Редирект 302

В HTTP 1.0 статус 302 использовался для обозначения временного перемещения запрошенного ресурса на новый адрес. В HTTP 1.1 редирект 302 обозначает статус «Найдено» или Found. То есть ресурс существует, но владелец на некоторое время переместил его на новый адрес. Редирект 302 не передает авторитет и ссылочный профиль донора акцептору.

В HTTP 1.1 для временного перенаправления предложены редиректы 303 и 307. Это связано с некорректной обработкой статуса 302 в некоторых браузерах.

По стандартам HTTP 1.0 браузер после получения ответа 302 должен использовать для нового запроса метод POST. Разработчики некоторых браузеров не соблюдают этот стандарт и используют для нового запроса метод GET. В HTTP 1.1. эту проблему решают редиректы 303 и 307.

Вместо 302 для временного перенаправления лучше использовать редиректы 303 и 307.

Редиректы 303 и 307

В HTTP 1.1 статус 303 предложен вместо редиректа 302. Значение кода – See Other или «Смотрите другой ресурс». Для нового запроса браузер должен использовать метод GET. Применяйте редирект 303, когда у вас нет адекватного ответа на запрос пользователя, но имеется более или менее подходящая замена.

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

Статус 307 также используется вместо редиректа 302. Значение кода – Temporary Redirect или «временное перенаправление». Браузер не должен менять метод нового запроса. Запросы безопасными методами GET и HEAD выполняются автоматически. Запросы небезопасными методами, например, POST, выполняются с подтверждением пользователя.

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

Промежуточный вывод: в большинстве случаев владельцам сайтов подходит редирект 301. В этом случае HTTP-статус уведомляет поисковых роботов, что документ навсегда перемещен на новый адрес. Этот вид редиректа передает авторитет и ссылочную массу со страницы-донора на страницу-акцептор. Редиректы 303 и 307 используются, когда владелец сайта хочет временно перенаправлять пользователей с одного документа на другой.

Какие типы редиректов бывают

Редиректы классифицируются по способу реализации. Настроить перенаправление можно через файл .htaccess или nginx.config, средствами PHP, HTML, JavaScript. Подробнее о каждом типе ниже.

Что такое htaccess-редирект

Так называют серверный редирект, который настраивается в файле .htaccess для сайтов, которые находятся на серверах под управлением Apache.

Чтобы настроить перенаправление, внесите изменения в файл .htaccess. Для доступа к файлу воспользуйтесь FTP-клиентом, например, FileZilla. В настройках программы в меню «Сервер» включите принудительное отображение скрытых файлов. Файл .htaccess находится в папке с названием доменного имени ресурса в каталоге public_html.

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

Цукерберг рекомендует:  Стартуем с Ember.js

В интерфейсе FTP-клиента FileZilla слева доступны файлы и папки локального компьютера, а справа — файлы и папки удаленного сервера.

Также доступ к файлу .htaccess можно получить через панель управления хостингом. В cPanel откройте раздел интерфейса «Файлы – Диспетчер файлов».

В настройках диспетчера включите отображение скрытых файлов.

Скачайте файл на компьютер и отредактируйте. Также файл можно редактировать через cPanel.

Чтобы отредактировать файл .htaccess, откройте его в блокноте. Добавьте код редиректа. Сохраните изменения и загрузите файл на сервер.

О коде редиректов и настройках конкретных перенаправлений пойдет речь ниже.

Чтобы настроить редирект на сервере под управлением Nginx, нужно добавить код перенаправления в конфигурационный файл nginx.conf. Код добавляется в блоке server. Получить код редиректа можно с помощью конвертера.

PHP-редиректы

PHP-редирект работает на уровне сервера. Этот способ перенаправления считается менее предпочтительным по сравнению с редиректом через файл .htaccess, так как он работает медленнее. Но в некоторых случаях предпочтительнее использовать этот тип редиректа.

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

Скачайте на жесткий диск файл index.php или откройте его для редактирования в диспетчере файлов панели управления хостингом. Файл находится в корневой папке сайта. Там же находится файл .htaccess.

Добавьте в файл index.php код редиректа. Сохраните изменения и загрузите файл на сервер.

JavaScript-редирект

Редирект с помощью кода JavaScript выполняется на стороне браузера, а не на стороне сервера. Чтобы посетитель попал со старой страницы на новую, скрипт редиректа должен полностью загрузиться в обозревателе. Поэтому JavaScript-редирект – более медленный способ перенаправления, чем серверные редиректы. Еще одна проблема — автоматическое перенаправление не сработает, если пользователь отключил в браузере JavaScript.

Тем не менее JavaScript-редиректы в некоторых случаях удобны. Например, их можно использовать для перенаправления с задержкой. Вы можете написать на старой странице сообщение вроде «Мы переехали на новый сайт, сейчас вы будете автоматически туда перенаправлены». Через несколько секунд пользователь автоматически попадет на новую страницу.

Чтобы реализовать перенаправление с помощью JavaScript, добавьте код редиректа между тегами и страницы, с которой нужно перенаправить пользователей. На сайтах под управлением WordPress это можно сделать с помощью бесплатного плагина Per page add to head.

Сохраните изменения на странице и проверьте, как работает редирект.

HTML-редирект

Этот тип перенаправления также работает на стороне браузера. Чтобы перенаправление сработало, обозреватель должен загрузить соответствующий HTML-код: метатег refresh. Поэтому этот тип редиректов работает медленнее перенаправлений на уровне сервера.

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

Сохраните изменения и проверьте, как работает перенаправление.

Промежуточный итог: предпочитайте серверные редиректы, так как они удобнее для пользователей. В большинстве случаев перенаправление лучше настраивать через конфигурационный файл .htaccess для серверов на Apache и nginx.config для серверов на Nginx.

Где взять код редиректа

Если у вас нет соответствующей подготовки и знаний, есть два варианта. Можно обратиться к специалисту или воспользоваться онлайн-генератором кода. Подборка сервисов ниже сэкономит вам время и деньги:

  • 301 Redirect Code Generator. Генерирует код редиректа для Apache, ASP и ASP.NET. Также создает код JavaScript и HTML-перенаправлений.
  • Seomagnifier. Создает код редиректа 301 с домена с www на домен без www и наоборот.
  • 301 Redirect Code Generator Tool. Создает редиректы со страницы на страницу, а также с домена без www на домен с www. Генерирует PHP-код, перенаправления для серверов на ASP и ASP.NET, HTML- и JavaScript-перенаправления.
  • Генератор файла .htaccess. Создает код редиректов со страницы на страницу, а также между разделами сайта, генерирует скрипты перенаправлений с домена с www на домен без www.
  • Универсальный генератор кода перенаправлений для .htaccess. Можно выбрать сценарий редиректа, указать URL и сгенерировать код.
  • Генератор редиректов 301. Создает код перенаправлений для серверов на Apache, ASP, ASP.NET, а также код HTML- и JavaScript-редиректов.
  • Генератор перенаправлений от Brontobytes. Поможет настроить редирект со старого домена на новый, изменить адрес отдельных страниц и разделов ресурса, настроить перенаправление с домена без www на домен с www.
  • Пользователям серверов на Nginx будет полезен конвертер кода. Он трансформирует редиректы для .htaccess в перенаправления для nginx.config.

По данным британской компании Netcraft на ноябрь 2020 года, 44 % активных сайтов работают на серверах под управлением Apache. 21 % ресурсов работает на серверах под управлением Nginx. Доля серверов с другим ПО не превышает 8 %.

Как делать редиректы: популярные примеры

В этом блоке представлены наиболее популярные редиректы. Инструкции помогут вам настроить перенаправления без обращения к техническим специалистам.

Как сделать редирект с http на https

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

  1. Скачайте конфигурационный файл на жесткий диск или откройте его для редактирования в панели управления хостингом.
  2. Сгенерируйте код редиректа с помощью одного из предложенных выше сервисов.
  3. Добавьте код в файл, сохраните изменения и загрузите .htaccess на сервер.

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

  • Рассказ нашего маркетолога Тимура Фехрайдинова об опыте и особенностях перевода на безопасный протокол сайта «Текстерры».
  • Техническая инструкция по переводу на https сайта на WordPress, включая тактику работы с Google Search Console и «Яндекс.Вебмастер».
  • Плагин для WP Really Simple SSL. За минуту решает все технические задачи, связанные с установкой SSL-сертификата и переводом сайта на безопасный протокол.


Как сделать редирект с или на www

Подробную инструкцию по перенаправлению с домена без www на домен без www через файл .htaccess читайте в статье о зеркалах сайтов. Если хотите, выполните этот же редирект с помощью php. Действуйте так:

  1. Загрузите на жесткий диск файл index.php.
  2. Сгенерируйте код редиректа.
  3. Вставьте код в файл, сохраните изменения и загрузите index.php на сервер.
  4. Укажите основной URL в настройках сайта. В WordPress это можно сделать в меню «Настройки – Общие».

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

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

Как настроить перенаправление с одной страницы

Чтобы настроить редирект с одной страницы на другую, отредактируйте файл .htaccess или index.php: добавьте в него сгенерированный код редиректа. Если сайт работает на WordPress, воспользуйтесь для настройки редиректов плагинами:

  • Simple 301 Redirects. О настройках читайте в статье про зеркало сайтов.
  • Redirection. Инструкция по настройке смотрите в нашей статье «Лайфхаки для пользователей WordPress».
  • Redirect. Добавляет блок настройки редиректов на страницу редактирования публикаций.

Перенаправления можно настраивать через панель управления сервером. В cPanel настройки доступны в разделе «Домены – Перенаправления». Инструкцию смотрите в статье о зеркалах сайтов.

Как настроить редирект при смене домена

При переезде на новый домен перенаправление настраивается так же, как редиректы с http на https или с домена с www на домен без www. Изменения можно внести через файл .htaccess или index.php.

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

Добавьте код в файл .htaccess и сохраните изменения.

Как сделать редирект папки

Редирект папки (каталога, директории) можно настроить с помощью файлов .htaccess или index.php. Настройка перенаправлений может понадобиться, если в URL страниц отображаются названия директорий.

Например, в блоге о книгах URL может выглядеть так: https://exampleblog.ru/klassica/idiot. Автор создает отдельный каталог для русской классики и хочет, чтобы URL выглядел так: https://exampleblog.ru/russkaya-klassica/idiot. В .htaccess нужно добавить такой код:

RedirectMatch 301 ^/klassica/(.*)$ /russkaya-klassica/$1

Частные случаи: редирект слэша и редирект расширения

Одни владельцы сайтов предпочитают URL со слэшем в конце, а другие без слэша: https://exampleblog.ru/page/ и https://exampleblog.ru/page соответственно. Поисковые системы считают варианты со слэшем и без него разными URL. Поэтому важно выбрать предпочтительную структуру сетевых адресов и настроить перенаправления.

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

Чтобы настроить перенаправления с адреса с расширением на адрес без расширения, сгенерируйте код и добавьте его в конфигурационный файл. Редирект с URL с расширением .html на URL с расширением .php выглядит так:

RewriteRule index\.html index.php [NC,R]

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

Как проверить редирект

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

Чекеры показывают вид редиректа и статус ответа сервера при переходе на новый адрес.

Сделать редирект просто

Для этого в первую очередь выберите вид редиректа. В большинстве случаев подходит перенаправление 301 или постоянный редирект. Иногда для временного перенаправления стоит использовать редирект 303 и 307.

htaccess для сайта. Создание и настройка htaccess

.htaccess — это специальный файл-инструкция для домена apache, с помощью которого можно корректировать конфигурацию веб сервера, его модулей, а так же параметры PHP.
Инструкции распространяются на эту директорию, в которой создан файл, а так же на поддиректории.

Создать .htaccess можно через файловый менеджер хостинга (ISPmanager, который предоставляется бесплатно при аренде выделенного сервера) или через FTP. В Windows, MacOS, возможно, у вас не получится создать этот файл. Поэтому можно поступить следующим образом:

  • Создать файл htaccess без точки
  • Загрузить его на сервер по ftp
  • Переименовать файл и поставить в начало имени файла — точку

Не отображается файл .htacess

Если вы загрузили файл htaccess, но он не отображается — значит вопрос в настройке FTP клиента или FTP сервера. В системе Unix, на которой работают большинство хостингов, если имя файла начинается на точку, система считает его скрытым. Поэтому, в первую очередь, чтобы сделать так, чтобы файл был доступен — зайдите в настройки вашего FTP клиента, к примеру, FileZilla, и включите отображение скрытых файлов.

Как изменить файл .htaccess?

В первую очередь, перед тем как начать редактировать этот файл — сделайте его резервную копию. Если что-то сделано не так, вы легко сможете восстановить работу сайта. Редактировать файл можно любым текстовом редакторов. Например, Notepad++, Sublime или редактор в панели хостинга.

Что нужно знать при редактировании файла хтаццесс?

Как было сказано выше — действие файла распространяется на текущую директорию и все внутренние поддиректории. Кроме того:

  • Если правило начинается на символ «#», то это называется комментарием и веб сервер не будет его обрабатывать.
  • Имеются специальные переменные. Например, % для определения IP клиента и др.
  • Пути к файлам, к примеру, до htpasswd указываются от корня сервера
  • Адреса документов необходимо указывать с указанием протокола. К примеру, не www.website.ru, а http://website.ru

После редактирования файла появилась ошибка 500 — Internal Server Error

Это означает, что имеется ошибка в файле .htaccess. Возможные причины:

  • Ошибка синтаксиса (опечатки, неверные настройки)
  • Отсутствует тот или иной модуль в веб сервере
  • Старая версия веб сервера/модулей или инструкций файла .htaccess
  • Некоторые директивы запрещены к редактированию

Как устранить эту ошибку: посмотрите в error_log веб сайта. Там обязательно вы увидите указание на ошибку.

htaccess для HTML сайта

Файл .htaccess будет работать как для PHP сайтов, так и для html сайтов. Главное — наличие веб сервера apache, т.к. именно он обрабатывает этот файл.

Установка индексного файла для сайта

Индексный файл — это тот файл, который будет открываться при заходе на сайт или директорию сайта. Как правило, это файл: index.php, index.htm, index.html. Но вы можете поменять его на любой другой. К примеру: myfile.php такой директивой:
DirectoryIndex myfile.php

Вывод ошибок PHP

Если вы хотите включить отображение ошибок PHP, то в файл .htaccess необходимо добавить следующую директиву:
php_value display_errors 1
Таким образом, php будет показывать все ошибки прямо в браузере.

Ошибка 403 — Forbidden при открытии директории сайта

Ошибка 403 Forbidden означает, что доступ запрещен. Если вы видите эту ошибку при открытии директории сайта и вместо этого сообщения хотели увидеть список файлов и директорий, это означает, что отключена специальная директива. Это сделано в целях безопасности, чтобы потенциальные вредители не могли найти файлы, через который можно взломать сайт или просто открыть файлы, доступ к которым вы не разрешали. Чтобы включить показ всех файлов и директорий, напишите следующее:
Options +Indexes

А чтобы включить запрет на отображение файлов в директории, напишите:
Options -Indexes

Кроме того, можно запретить к показу только определенные типы файлов в директории. К примеру, запретим показывать файлы .php и .html:
IndexIgnore *.php *.html

.htaccess кодировка

Поменять кодировку сайта можно через файл .htaccess. К примеру, по умолчанию, веб сервер работает в кодировке UTF-8, а вам нужна кодировка windows-1251. Изменяется это просто:
AddDefaultCharset windows-1251

Таким образом, вы переопределите кодировку в текущий директории и поддиректории.
Так же можно задать кодировку отдельным типам файлам. К примеру, когда основной документ у вас в одной кодировке, а .htm файлы — в другой. Давайте сменим кодировку браузера для .htm файлов на UTF-8:
AddType «text/html; charset=utf-8» .htm

Изменение максимального размера загружаемых файлов в PHP

Вы можете увеличить или уменьшить максимальный размер загружаемого файла через скрипт PHP. К примеру, увеличим размер до 100МБ с помощью двух директив upload_max_filesize и post_max_size:
php_value upload_max_filesize 20M
php_value post_max_size 20M

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

Время жизни сессии PHP

Через файл .htaccess возможно изменить время жизни сессии PHP. Время жизни задается в секундах. По умолчанию время хранения сессий — 1440 секунд — это 24 минуты.
Давайте увеличим время хранения на 1 неделю. Надо вписать в файл следующие директивы:
php_value session.gc_maxlifetime 604800
php_value session.cookie_lifetime 604800


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

  • Быстрому исчерпанию места на диске
  • Переполнение количества файлов в директории (inodes)
  • К долгому удалению файлов через специальную системную утилиту — garbage collector
  • Увеличению нагрузки на сервере

Включение обработки других файлов интерпретатором PHP
Через наш файл, вы можете указать отдельный список типов файлов, которые будут обрабатываться через php. К примеру, вы хотите включить обработку файлов интерпретатором PHP, которые имеют расширение .phtml. Тогда впишите:
AddType application/x-httpd-php .phtml

Ограничение на использование оперативной памяти в PHP

Для любого скрипта на сервере выдается ограничение на максимальный используемый объем оперативной памяти. Параметр называется memory_limit и его можно посмотреть через phpinfo() или изменить через .htaccess. К примеру, ограничить 256 МБ:
php_value memory_limit 256M

Обращаем внимание, что размер нельзя задать больше, чем разрешено самим сервером.

Основное зеркало сайта через .htaccess

Если у вашего сайта несколько алиасов (зеркал), то для SEO это не очень хорошо, т.к. появляется множество дублей сайта и он перестает быть уникальным. Можно настроить редирект на основной домен вашего сайта, к примеру, на имя website:
RewriteEngine on
RewriteCond % !^website.ru
RewriteRule ^(.*) http://website.ru/$1 [R=301,L]

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

Включение переадресации для сайта на HTTPS

С недавних пор, Google и другие поисковые системы отдают предпочтение сайта, у которых настроен SSL. И если вы это сделали, то необходимо настроить переадресацию на эту версию, иначе опять возникнут дубли страниц сайта по разным адресам: http и https. Просто впишите следующее в ваш файл:
RewriteEngine on
RewriteCond % !https
RewriteRule ^ https://%% [L,R=301,NE]

Правильная SEO переадресация с HTTPS

Чтобы исключить дубли сайта и включить переадресацию на https версию сайта, нужно внести следующее. На примере, рассмотрим вариант, когда основной домен — без www:
RewriteEngine On
RewriteCond % ^www.(.+) [NC]
RewriteRule ^(.*) https://%1/$1 [R=301,NE,L]

Запрет доступа по IP

Через файл .htaccess вы можете запретить доступ к ресурсам сайта или наоборот, разрешить только определенным IP адресам. Можно ограничить как ко всем файлам и директориям, так и к некоторым.
К примеру, запретим доступ всем к текущей директории, поддиректории и файлам:
Order Deny,Allow
Deny from all

А можно заблокировать пользователя, зная его IP адрес 192.168.1.1:
Order Deny,Allow
Deny from 192.168.1.1

Или наоборот, запретить всем, а разрешить только 223.332.111.11:
Order Deny,Allow
Deny from all
Allow from 223.332.111.11

Указание собственных страниц ошибок

Вы можете указать свои страницы для различных ошибок (404,403, 500). Просто указать соответствующий путь до них относительно адреса сайта:
ErrorDocument 403 /error/403error.html
ErrorDocument 404 /error/404error.html
ErrorDocument 500 /error/500error.html

Где /error/название файла — это HTML версия страницы ошибки. Пользователь увидит ее, если возникнет соответствующая ситуация.

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

Настройка 301 редиректа в файле htaccess

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

Зеркала сайта https и www

Для всех пользователей https:// site.ru, www. site.ru и site.ru – это один и тот же ресурс. Но с технической точки зрения, это три разных сайта. Поэтому крайне важно (и это должен сделать владелец каждого ресурса!) настроить переадресацию. В этом случае происходит автоматическое перенаправление. Что может произойти, если пренебречь перенаправлением?

1. Три разных зеркала будут конкурировать между собой в выдаче поисковых систем, что отрицательно повлияет на SEO-продвижение.

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

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

Переезд сайта

Если вы поменяли доменное имя, то без перенаправления не обойтись. Причём смена имени может быть двух типов:

  • Вместо abc.ru стало def.ru (смена домена).
  • Вместо abc.ru стало abc. com либо abc.info (смена доменной зоны).

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

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

Подмена ссылок

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

Где же это сделать?

Необходимо настроить редирект в файле htaccess, который отвечает за следующие функции:

  • Стартовая страница.
  • Установка кодировки документов.
  • Ограничение доступа для отдельных групп пользователей.

Настройка 301 редиректа в htaccess

Для того чтобы сделать редирект в htaccess, для начала нужно найти этот файл. Обычно он находится в корневом каталоге сайта.

Если же он еще не создан, то создать его можно через «Блокнот», а затем сохранить под именем htaccess (тип файла).

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

Redirect 301 /staraya.html http:// vash-sait. ru/novaya.html

RewriteCond % ^www. vash-sait\.ru$ [NC]

RewriteRule ^(.*)$ http:// vash-sait. ru/$1 [R=301,L]

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

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

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

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

Основные операторы регулярных выражений

Для начала давайте разберемся с основными операторами регулярных выражений (флаги, модификаторы, специальные символы):

  • ^ — ограничение слева (начало строки);
  • $ — ограничение справа (конец строки);
  • . — любой символ;
  • () — переменная;
  • \ — экранирование (символ после \ считается обычным, а не спецсимволом);
  • [] — диапазон значений;
  • ! — спецсимвол отрицания.
  • ? — символ повторяется 0 или 1 раз;
  • + — 1 и более символов (до 65536);
  • * — 0 и более символов (до 65536).

Как настроить 301 редирект

Начнем с 301 редиректа. Во-первых, он представляет из себя автоматическую переадресацию с одного адреса на другой. Он вполне может применяться в том случае, когда сайт переводится с протокола http на https, когда сайт перенастраивается с «полноразмерных» адресов на ЧПУ (т.е. было https://www.karcher.xyz/content/news/31-01-2020/razdatka, стало https://www.karcher.xyz/ razdatka), а также для «склеивания» страниц-дублей. Во-вторых, 301 редирект сообщает поисковым системам, что «ребята, имеющийся у вас адрес уже не работает, поэтому идите вон туда», а они такие «ОК, учтем». Таким образом, переадресация происходит безболезненно, без потери позиций и ссылочной массы.

Но что будет, если «Ой, да ну нафиг? Буду я еще с переадресациями заморачиваться, только время потеряю!»? Можно сделать и так, НО… история «старой» страницы будет утрачена, а «новая» будет ранжироваться «с нуля». Как следствие – потеря позиций и ссылочной массы (это в лучшем случае).

Варианты применения 301 редиректа:

  • Склейка доменов;
  • Переезд сайта на другой адрес (может пригодиться при попадании сайта под какие-либо фильтры);
  • Для увеличения показателей тИЦ, PR и увеличения трафика при покупке другого домена (настраивается редирект на ресурс, который нуждается в поднятии тИЦ и PR);
  • При смене движка сайта (в этом случае настройка 301 редиректов строго обязательна, в противном случае гарантирована полная потеря трафика);
  • при переезде с http на https;
  • склейка «дублей»

и т.д., всех причин не перечислить.

301 Редирект при смене домена основного сайта

Итак, Вы решили сменить домен. Сразу же даем готовое решение:

  • переделываем robots.txt на старом домене. Готовый текст файла:


  • настраиваем 301 редирект для всех страниц сайта (кроме файла robots.txt) с помощью приведенного ниже кода:

301 редирект при смене адреса страницы

Постраничный редирект (когда меняется адрес страницы) осуществляется с помощью приведенного ниже кода:

RewriteCond % ^www\.stokrat\.org$ [NC]

RewriteRule ^stranica/nastrojka-301-redirekta/$ https://www.stokrat.org/newpage/ [R=301,L]

Именно этот код используется при «переезде» страниц, например, на ЧПУ.

Настроить редирект с www на домен без www в htaccess

Упоминание www. в адресе домена уже давно не является актуальным. Тем не менее сайтов с www. полно. Склеивание доменов с www. и без должно производиться в строго обязательном порядке, т.к. поисковые системы воспринимают эти 2 домена как 2 разных сайта с разными тИЦ, PR, посещаемостью, ссылочной массой и всем остальным. Следовательно, один из них – оригинал, а второй – «самозванец» с «ворованным контентом». Чтобы этого не происходило – домены с www. и без необходимо «склеить» с помощью 301 редиректа. Код настройки приведен ниже.

Код редиректа с www на без www в htaccess выглядит так:

RewriteEngine on
RewriteCond % ^www.site.ru$ [NC]
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]

Теперь давайте разберемся с директивами.

RewriteEngine on/off – если выражаться простым человеческим языком – она служит выключателем 301 редиректа.

RewriteCond — в этой директиве прописываются условия для «срабатывания» следующей директивы.

RewriteRule — директива преобразования одного адреса в другой.

Настроить редирект с http на https в htaccess

Переезд с http на https многие считают «современным трендом». Однако, на сегодняшний день данная мера является обязательной (хотя формально она таковой не является). И вот настал тот час, когда Вы получили SSL-сертификат, Ваш сайт уже работает и по http и по https. Все что осталось настроить в файле .htaccess 301 редирект с http- на https-версии страниц сайта. Код для настройки приведен ниже.

RewriteRule ^(.*)$ https://site.ru/$1 [R=301,L]

А вот код для обратного редиректа (т.е. с https на http). Как видите, отличие всего в 1 символ:

RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]

Редирект со страниц index.php, index.html

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

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

RewriteRule ^index\.php$ http://site.ru/ [L,R=301]

Однако, если у главной страницы есть дубль вида site.ru/index.php, вполне вероятно, что и у остальных страниц есть дубли вида site.ru/index.php/page.html (при оригинальном адресе site.ru/page.html). Это плохо, поэтому также требуется настройка 301 редиректа с помощью приведенного ниже кода:

RewriteRule ^index\.php/(.*)$ /$1 [R=301,L]

Нередки случаи, когда у главной страницы есть дубль вида

site.ru/main.html, для которого так же необходимо прописывать 301 редирект на site.ru:

Либо альтернативный вариант:

Redirect 301 /main.html HYPERLINK «http://site.ru/» http://site.ru/

А вот теперь рассмотрим обратную ситуацию – когда Вы хотите склеить дубли, настроив редирект с site.ru на site.ru/main.html. Сделать это можно с помощью приведенного ниже кода.

RewriteRule .* %1.html [R=301,L]

RewriteRule ^(.*)/$ /$1.html [R=301,L]

Ну а если Вам важно, чтобы адреса всех внутренних страниц отображались без .html на конце, то редирект настраивается вот таким кодом:

RewriteRule ^(.*)\.html$ /$1 [R,L]

Теперь о настройке редиректа со страниц .htm на страницы .html. Для настройки такого редиректа достаточно добавить в .htaccess следующий код:

RewriteRule ^(.*)\.htm$ $1.html [R=301,L]

Редиректы с адресов со слэшами в конце и без них

Для начала рассмотрим еще один вид дублей страниц – страницы вида http://site.xyz/page и http://site.xyz/page/ — кроме слэша в конце, они ничем не отличаются. Настраивать редирект можно и с первой на вторую, и со второй на первую. Рассмотрим оба варианта:

Редирект с http://site.xyz/page на http://site.xyz/page/:

RewriteRule (.*) http://www.site.ru/$1/ [R=301,L]

Редирект с http://site.xyz/page/ на http://site.xyz/page:

RewriteRule ^(.+)/$ /$1 [R=301,L]

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

Редирект на мобильную версию сайта

Разумеется, если Ваш сайт работает на движке WordPress или Joomla, то настроить редирект на мобильную версию сайта можно с помощью плагинов.

Однако, Google является сторонником адаптивного дизайна. Следовательно, выделять отдельный домен/поддомен для мобильной версии не нужно. Т.е. в Google утверждают, что «если есть возможность обойтись без редиректов на мобильную версию – именно так и нужно поступать».

Но что делать, если без таких редиректов все-таки не обойтись?

Можно настроить редирект через файл .htaccess

RewriteCond % «text\/vnd\.wap\.wml|application\/vnd\.wap\.xhtml\+xml» [NC]

RewriteRule ^ http://m.domain.com% [R,L]

Настройка мобильного редиректа через PHP

Необходимо воспользоваться специальной библиотекой Mobile Detect, она необходима для того, чтоб распознать, с мобильного устройства пришел пользователь, или со стационарного.

Из этого кода становится очевидно, что можно распознать не только компьютер/смартфон/планшет, но и его операционную систему.

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

Однако, это не совсем верный способ, т.к. столь низкое разрешение далеко не у всех смартфонов, даже бюджетных. Гораздо правильнее заменить в коде число 480 на 720, большинство современных смартфонов имеет разрешение не менее, чем 1280 пикселей в высоту и 720 в ширину.

302 редирект

302 – это временная переадресация (по сути, это единственное отличие от 301 редиректа). Но где она может применяться?

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

Т.е. есть постоянный адрес (например, https://inet-market.xyz/sales/) и сегодня с него происходит редирект на страницу https://inet-market.xyz/sales/december/, т.е. на страницу с декабрьскими акциями. Ну а через несколько дней редирект перенастраивается на https://inet-market.xyz/sales/new-year/, т.е. на страницу с новогодними акциями.

И в таких ситуациях 302 редирект не только уместен, но и является самым правильным решением.

Основные причины применения 302 редиректа:

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

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

Как проверить правильно ли настроен редирект


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

ВАЖНО! Перед тем как делать выводы о том, что «что-то тут не так», почистите кэш браузера и повторите попытку.

Другой способ – воспользоваться онлайн-сервисами по проверке кода ответа сервера. Например, http://4web.su/s_redirect/. Вводим имя домена и проверяем код ответа. Если редирект настроен правильно, то код ответа будет либо 301, либо 302 (в зависимости от того, какой именно редирект Вы настраивали). На некоторых сервисах (кстати, 4web.su – один из них) может отображаться еще и код, который сервер отдает уже после переадресации. Единственный допустимый код в этом случае – 200 ОК.

В данном случае мы попытались проверить как работает http-версия нашего сайта. Во-первых, мы получили сообщение о том, что у нас настроен 301 редирект (т.е. постоянный), новый адрес (https-версия сайта), а также отображены 2 кода ответа — 301 Moved Permanently и 200 ОК.

Если же вместо 200 ОК вылезает код 404 (как на приведенном ниже скриншоте) – значит редирект настроен неправильно.

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

Большинство программистов настраивает редиректы путем прописывания ранее приведенных кодов в файле .htaccess. Основной минус такого подхода в том, что можно неплохо «накосячить», т.е. код в файл внесли, но он почему-то не срабатывает (или срабатывает, но неправильно). Причины могут быть самыми разными – возможен косяк в самой CMS, либо код на редирект должен располагаться выше/ниже, и т.д., вариантов масса. Поэтому существуют и альтернативные способы настройки редиректа. Например, PHP или JavaScript.

PHP редирект

Во-первых, PHP-это сервероориентированный язык.

Во-вторых, редирект будет происходить на сервере, а не в браузере пользователя.

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

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

В зависимости от того, 301 редирект Вы хотите настроить, или 302. С помощью PHP обычно настраивается 302 редирект.

Простейший javascript-редирект

Основной минус данного способа в том, что не у всех (но у большинства) пользователей включен в браузере JavaaScript. Если JavaScript в браузере отключен – редиректа не произойдет.

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

Оформляется редирект в либо в :

ВАЖНО. Данный код в любом случае сработает быстрее, чем код Яндекс.Метрики, а это значит, что Яндекс до редиректа посетителя не засчитает.

Настроить 301 редирект в WordPress

Ранее мы уже говорили, что в WordPress удобнее всего настраивать редиректы с помощью плагинов. О них и поговорим.

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

Число редиректов, которые через него можно настроить, не ограничено. Плюс бонусом можно отслеживать статистику по настроенным с помощью этого плагина редиректам и даже отслеживать ошибочные перенаправления (когда после редиректа отдается код не 200 ОК, а 404 Not Found).

Единственный минус этого плагина в том, что он англоязычный. Но разобраться с настройкой редиректов крайне просто: указываем адрес, откуда будет происходить переадресация, указываем адрес, куда надо переадресовать, выбираем из списка код ответа, добавляем комментарий (при необходимости) и сохраняем. Готово!

Если этот плагин чем-то не устраивает, можно рассмотреть альтернативный — Safe Redirect Manager (разработчик – компания 10up). Принципиально ничем не отличается.

Не грех упомянуть Simple 301 Redirects, но он необходим исключительно для настройки 301 редиректа.

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

Самое ужасное – получение битых ссылок «из ниоткуда». «Да как так-то? Еще вчера все отлично работало! Почему теперь страница не найдена?». Это связано с тем, при обновлении контента, добавлении товаров/продуктов, либо по каким-то иным причинам, адреса могут меняться. И что делать? Правильно – настройка 301 редиректа будет единственным правильным решением. Как и в WordPress, в Joomla данный вопрос решается путем работы с плагинами, т.е. без вмешательства в .htaccess.

И сразу же конкретный пример, когда такое может произойти. Интернет-магазины на Joomla – это не редкость. И вот в магазин поступил новый смартфон, какой-нибудь Gopo Center C4. Менеджеры создают под него карточку товара, затем заказывается реклама и делается рассылка, а затем директор магазина говорит менеджеру «А почему в заголовке не указали, что он в черном и белом цвете? Исправить!», менеджер вносит исправления, вследствие чего адрес ссылки меняется. Итог – вся реклама и рассылка превращается в пустой слив бюджета, т.к. прошлая ссылка уже не работает. И вот тут есть 2 выхода – откорректировать адрес ссылки вручную (на сайте интернет-магазина, но это отдельная тема для разговора), либо настроить 301 редирект со старого адреса на новый.

Теперь о том, как решить эту проблему через 301 редирект.

1. Необходимо убедиться, что редирект-плагин включен.

Для этого в админке выбираем Расширения => Менеджер плагинов.

Ищем в списке установленных плагинов «Система – Перенаправление» и включаем (если он выключен).

2. Проверяем «плохие» адреса.

В верхнем меню переходим в Компоненты => Перенаправление, там будет список всех “плохих” URL вашего Joomla-сайта.

3. Настраиваем редирект.

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

Т.е. для решения данной задачи хватает стандартного плагина Joomla, который идет с движком «с завода».

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

Формирование адресов на OpenCart – это очень больная тема. А чтобы Вам было проще понять, насколько она на этом движке большая, просто взгляните на то, какой вид имеет адрес главной страницы:

И это вместо site.com

Почему разработчики так эту проблему не решили – не понятно. Видимо, в этих «хвостах» зашифрованы послания тем, кто пытается через тайну Вселенной постичь тайну сокровищ Майя. Но т.к. среди простых землян таких нет (или есть?), то проблема перекладывается с разработчиков движка на программистов сайта.

Решить проблему можно несколькими способами:

Способ 1. В папке templates/common найти файлы header.tpl и footer.tpl и произвести в них замену кода с на

Способ 2. Настройка редиректа на site.com через .htaccess, вставив вот этот код:

RewriteRule ^index\.php$ http://site.com/? [R=301,L]

Таким же (а именно – вторым) способом можно настроить редиректы со старых адресов категорий на новые. По умолчанию адреса ссылок в OpenCart выглядят примерно следующим образом:

На такие ссылки смотреть очень больно, причем в прямом смысле, т.к. глаза реально начинают болеть при виде таких адресов. В том же .htaccess можно настроить редирект на «человеческие» адреса вида site.com/category с помощью такого кода:

RewriteRule ^index\.php$ http://site.com/new-category? [R=301,L]

Но что делать с динамическими адресами, которые из-за привязки к определенной секции имеют вид site.com/katalog?c=okna-pvkh?

Программисты довольно долго искали решение. «Методом тыка» (точнее — проб и ошибок) решение было найдено. В данном случае происходит редирект на главную страницу сайта:

RewriteCond % ^c=okna-pvkh$ [NC]

RewriteRule katalog http://site.com/? [R=301,L]

Примечания и ошибки

Теперь поговорим о том, как не допускать ошибок при настройке 301 редиректа:

  • Нельзя нарушать последовательность правил переадресации. После настройки редиректа необходимо убедиться, что настройка не дала каких-либо «побочных эффектов». Если нарушить последовательность правил, то ранее настроенные редиректы могут либо прекратить функционировать, либо функционировать неправильно. Противоречий в правилах быть не должно.
  • Не стесняйтесь пользоваться официальными мануалами, т.к. у 301 редиректа из-за непростого синтаксиса есть множество особенностей. Упустить какой-то нюанс при настройке – проще простого.
  • После очередных «допиливаний» ВСЕГДА проводите полную проверку работоспособности тех правил, которые были внедрены ранее. Настройка без проверки – это не настройка даже «для галочки». Один лишний символ может «обвалить» работу всего сайта, либо заставить его работать неправильно. За другими программистами нам уже не раз приходилось исправлять работу сайта, когда с адреса site.com/oldpage происходит 301 редирект на site.com/newpage, а затем с помощью того же 301 редиректа происходит переадресация обратно на site.com/oldpage и далее «по кругу».

Ну и в заключение приведем несколько примеров, когда применять 301 редирект вообще нельзя.

Во-первых, «многоходовки», когда идет череда из нескольких 301 редиректов подряд. Гораздо правильнее настроить редирект сразу на «финишный» адрес.

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

В-третьих, редиректы «не туда». Т.е. если страница переехала с первого адреса на второй, а при настройке редиректа Вы ошибочно указываете адрес совершенно другой страницы.

В-четвертых, редирект на страницу, которая работает по каким-то причинам очень некорректно. Страница должна работать стабильно и отдавать либо код 200, либо код 404.

В-пятых, редирект файла robots.txt. Это запрещено правилами многих поисковых систем. Более того, многие допускают одну и ту же ошибку – при переходе на https настраивают 301 редирект с http://site.xyz/robots.txt на https://site.xyz/robots.txt. Файл robots.txt должен быть доступен по обоим адресам без всяких редиректов. Ровно то же самое касается и xml-карты сайта.

Комментарии (1):

Войдите или зарегистрируйтесь чтобы оставить комментарий

.htaccess — .htaccess как правильно настроить?

Друзья, помогите, не могу разобраться с правильной настройкой .htaccess

Задача следующая:

Настроить следующую логику обработки:
* www.example.ru → example.ru (301 редирект)
* example.ru/page.html → example.ru/page (вот тут настроить нужно редирект или рерайт url, чтобы расширение не указывалось в конце строки)
* example.ru/page/ → example.ru/page (соответственно редирект или рерайт страниц со «/» на конце на страницы без «/»)

В конечном счета, сам сайт должен быть доступен по адресу example.ru, а странички по адресу example.ru/page → без слеша и расширения на конце.

Возможно ли подобное решить одним редиректом, а не несколькими последовательными?

Файл на гитхабе → https://github.com/dmitriyfourier/strtgst-site/blob/htacces-structure/.htaccess
Буду благодарен за пул реквест и правки → за рабочее решение закину плюшек на яндекс деньги.

Я правильно понимаю, что rewrite — исправляет отображение url в строке, а redirect — переадресовывает на другой адрес.
Есть ли где-то на GeekBrains уроки/курсы/вебинары по htaccess?

Как правильно настроить .htaccess под задачу?

Товарищи прошу вашей помощи.
Что имеем:
требуется слэш на конце: domain.ru/test -> редиректил на test/
собственно строку test (может быть из двух слов через тире,могут быть цифры) отдавал в index.php?page=$1
при этом js css грузился из своих папок
любой запрос img/название картинки уходил getphoto.php?src=название картинки
любой запрос upload/папка/название картинки уходил так же getphoto.php?folder=&src=
ещё есть папка admin она должна работать штатно.
Мне в идеале что бы любой запрос кроме как картинкам или статике уходил в index.php?page=
Я сделал так:

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

  • Вопрос задан 29 авг.
  • 34 просмотра

MaKS_Ibl4, было бы нагляднее с примерами для /img/ и /uploads/

dodo512, да, сейчас для себя понял что на главной странице в моей версии не работает редирект картинок.

У меня получается как, где то ссылки на картинки src=»https://toster.ru/q/img/image.png»
где то src=»https://toster.ru/img/image.png»
конкретно в uploads: src=»https://toster.ru/uploads/folder/image.png»

Логика сайта какая, в index.php должна отдаваться строка запроса -> условно делаем запрос domain.ru/stranica
в таком случае пользователя должно кинуть на domain.ru/stranica/ а мне в index.php в параметр page stranica и я смотрю есть ли файл с таким названием и делаю include. С моим htaccess к этому функционалу вопросов нет.
css и js то же подключены не от корня а просто «css/file.css», но htaccess опять же и тут справляется (ведь если domain.ru/stranica/ то корень другой :) ).
Картинки на всех страница он то же перекидывает в getphoto.php?src=$1, вот uploads вообще ни как не могу победить и на главной почему то правило с img/(.*) не отрабатывает

Пытался и
RewriteRule uploads/(.*)/(.*) getphoto.php?src=$2&folder=$1 [L]
и воткнуть
RewriteCond % ^uploads/$ [NC]
RewriteRule ^.*uploads/(.*)/(.*)$ getphoto.php?src=$2&folder=$1 [L]

нуль, пытался хоть какую то реакцию вызвать и ничего

Понравилась статья? Поделиться с друзьями:
Все языки программирования для начинающих