1. Главная страница » Компьютеры

Htaccess редирект на https beget

Автор: | 16.12.2019

Что такое HTTPS/SSL?

HTTPS (аббр. от англ. HyperText Transfer Protocol Secure) — расширение протокола HTTP для поддержки шифрования в целях повышения безопасности. При использовании HTTPS данные передаются поверх криптографических протоколов SSL или TLS. В отличие от HTTP с TCP-портом 80, для HTTPS по умолчанию используется TCP-порт 443. Более подробное описание этого протокола можно прочесть в Wikipedia.

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

Посетители Ваших сайтов будут уверены в конфиденциальности данных и достоверности страниц, а как дополнительное приемущество использования SSL — большее доверие пользователей к сайту и более высокие позиции в поисковых системах!

Как заказать бесплатный SSL-сертификат из панели управления?

1. Зайдите в раздел Домены и поддомены и выберите напротив домена "Управление SSL сертификатами".

2. В открывшемся окне перейдите на вкладку "Бесплатный сертификат" и нажмите кнопку "Установить".

3. После заказа SSL-сертификата вы получите письмо на контактный email о подаче заявки на выпуск SSL, а затем еще одно письмо о завершении его установки.

4. В момент установки для домена будет автоматически изменена A-запись, если домен работает на наших DNS. Если вы используете не наши DNS, необходимо самостоятельно прописать на них указанный в письме IP-адрес в качестве А-записи для домена.

Возможные проблемы при использовании SSL

Большинство CMS позволяют выбрать используемый протокол и настроить автоматическое перенаправление c HTTP на HTTPS. Если CMS эту функцию не поддерживает, можно настроить переадресацию вручную, добавив в начало файла .htaccess следующие строки:

Также стоит обратить внимание на возможные проблемы при использовании SSL:

    В том случае, если Ваш сайт проиндексирован поисковыми системами, при использовании SSL поисковые системы первое время будут считать сайты, доступные через HTTP и HTTPS, разными. Автоматическая склейка зеркал может занимать до 2 месяцев, за это время сайт может потерять свои позиции.

Правильным решением будет указать поисковой системе на эквивалентность этих сайтов с помощью директивы host в файле robots.txt, например:

Так как поисковые системы будут видеть несколько одинаковых страниц на разных доменах, рекомендуется указывать основную страницу, которая будет указываться при переходе из поисковой системы. Сделать это можно, поправив все ссылки на "rel=canonical", более подробно об этом можно прочесть в документации Google

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

  • Возможны проблемы со стороними сервисами, которые грузили данные с Вашего сайта и не понимают 301/302 редирект после перевода его на HTTPS
  • Удачной работы! Если возникнут вопросы — напишите нам, пожалуйста, тикет из Панели управления аккаунта, раздел "Помощь и поддержка".

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

    На хостинге RU-CENTER в настоящее время используется веб-сервер Apache версии 2.4.

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

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

    Примеры использования файла .htaccess

    1. Перенаправление доменов c синонима сайта на основной домен с кодом 301

    Перенаправить запросы на domain.ru с любого из синонимов сайта

    RewriteEngine On
    RewriteCond % !^domain.ru$ [NC]
    RewriteRule ^(.*)$ http://domain.ru/$1 [L,R=301]

    Перенаправить запросы на www.domain.ru с любого из синонимов сайта

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

    Эти правила рекомендуется размещать в самом начале файла .htaccess.

    2. Постоянное перенаправление с кодом 301

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

    Redirect 301 /page.html http://www.domain.ru/new_page.html

    • page.html — адрес старой страницы относительно корня сайта;
    • www.domain.ru — имя сайта;
    • new_page.html — адрес страницы, на которую нужно выполнить перенаправление.

    Например, для перенаправления всех запросов к странице /period/?test=123 вашего сайта на domain.ru, вы можете написать:

    Options +FollowSymLinks
    RewriteEngine On
    RewriteCond % ^test=123$ [NC]
    RewriteRule ^period/$ http://domain.ru/ [L,R=301]

    3. Переопределение страниц ошибок

    При помощи файла .htaccess вы можете установить свои страницы ошибок:

    #401 Авторизация не выполнена
    ErrorDocument 401 http://domain.ru/errors/401.html
    #403 Доступ запрещен
    ErrorDocument 403 http://domain.ru/errors/403.html
    #404 Страница не найдена
    ErrorDocument 404 http://domain.ru/errors/404.html
    #500 Внутренняя ошибка сервера
    ErrorDocument 500 http://domain.ru/errors/500.html

    Соответствующие файлы страниц ошибок (401.html, 404.html и др.) необходимо разместить в каталоге

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

    User-agent: *
    Disallow: /errors

    /ваш_домен/docs/errors/.htaccess, в котором прописать

    4. Постраничное перенаправление запросов на другой домен c кодом 301

    Следующий код перенаправит все запросы к страницам вашего сайта на аналогичные страницы другого сайта, например, запрос http://domain.ru/main будет переадресован на http://www.newdomain.ru/main:

    Redirect 301 / http://www.newdomain.ru/

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

    5. Ограничение доступа к сайту по IP

    Запретить доступ к сайту с IP-адресов 123.4.5.6 и 123.5.4.3

    Order Allow,Deny
    Allow from all
    Deny from 123.4.5.6 123.5.4.3

    Запретить доступ к сайту со всех адресов кроме 123.4.5.6 и 123.5.4.3:

    Order Deny,Allow
    Deny from all
    Allow from 123.4.5.6 123.5.4.3

    Запретить доступ к сайту для всех:

    6. Переопределение главной страницы сайта (индексного файла каталога)

    Сделать главной страницей файл menu.html:

    7. Включение обработки PHP в .html-файлах

    RemoveHandler .html .htm
    AddType application/x-httpd-php .php .htm .html .phtml

    8. Запрет выдачи листинга каталога

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

    9. Включить выполнение CGI-скриптов в папке docs для файлов с расширениями .cgi, .pl. .py

    В папке c CGI-скриптами необходимо разместить файл .htaccess с содержимым:

    AddHandler cgi-script .cgi .pl .py
    Options +ExecCGI

    Скрипт должен иметь атрибут исполнения (+x, права доступа, начинающиеся с 7, например, 755).

    Атрибуты (права доступа) можно изменить с помощью файлового менеджера панели управления, при помощи вашего FTP-клиента или по SSH . Также в разделе Веб-серверУправление модулями должен быть включен модуль CGI.

    10. Блокировка переходов со сторонних ресурсов

    Для запрета перехода c baddomain.ru на domain.ru добавьте в .htaccess следующее:

    RewriteEngine on
    RewriteCond % baddomain.ru [NC]
    RewriteRule .* — [F]

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

    RewriteEngine on
    RewriteCond % baddomain.ru [NC,OR]
    RewriteCond %
    baddomain2.ru [NC,OR]
    RewriteCond %
    baddomain3.ru [NC]
    RewriteRule .* — [F]

    11. Особенности использования кириллических доменов (.РФ, .МОСКВА и др.)

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

    Например, для перенаправления site.ru на caйт.рф нужно воспользоваться следующим правилом:

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

    В этом случае ваши посетители могут увидеть именно punycode-представление доменного имени в адресной строке браузера. Это не является ошибкой.

    12. Перенаправление с HTTP на HTTPS и обратно

    Перенаправить запросы на https://domain.ru

    Перенаправить запросы на http://domain.ru

    3. Диагностика ошибок

    Если после редактирования или размещения .htaccess при обращении к сайту вы получили ошибку 500, то, скорее всего, в файле .htaccess допущена ошибка. Посмотреть её причины вы можете в лог-файле /var/log/ваш_домен.error_log.

    Конфигурационный файл настройки .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] — то же самое.

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

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