Содержание

Что такое htaccess, редирект через htaccess и изменение адресов с mod_rewrite

Файл «.htaccess» (с точкой в начале названия файла) — это конфигурационный файл Apache. Он позволяет изменять глобальные настройки в некоторых конкретных директориях. К примеру, делать переадресацию (редиректы), отключать обработку PHP файлов. Файл «.htaccess» — это текстовый документ, который можно изменить в любом текстовом редакторе. Обычно на хостингах данный файл изначально присутствует в корневой папке сайта. Но вы можете создать несколько файлов «.htaccess» в любых подпапках. Тогда правила будут перезаписываться.

Простой редирект через .htaccess

Разберём одну из самых популярных задачу, которую возлагают на файл «.htaccess» — это переадресация посетителя сайта на другую страницу. Откройте файл .htaccess в корневом каталоге сайта и в самом начале, первой строчкой напишите:

Redirect 301 / https://mousedc. ru

301 означает, что во время перенаправления пользователя сервер выдаст код ответа 301-«Permanent Redirect», что означает, что документ перенесён на новый навсегда.

Некоторые возможные HTTP статусы:
301 — документ перемещен постоянно
302 — документ перемещен временно
303 — смотрите другой документ
403 — документ запрещён к просмотру
404 — документ не найден
410 — документ убран

Слеш «/» после 301 означает, что перенаправление будет срабатывать в любом случае, к какой бы странице или файлу не обратился пользователя. Если вместо слеша поставить адрес файла, к примеру:

Redirect 301 /folder/page1.php https://mousedc.ru

— то будет происходить переадресация только в том случае, если пользователь запросит страницу «/folder/page1.php».

Последним параметром для Redirect стоит адрес страницы, на которую будет сделано перенаправление. В примере это «https://mousedc.ru».

Редирект с регулярным выражением через .htaccess

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

RedirectMatch 301 (.*) https://mousedc.ru$1

Чтобы понять, что происходит в этом коде, рекомендуем прочитать все статьи о регулярных выражениях, начиная с Регулярные выражения в PHP. Если кратко, то образуется карман (.*), значение которого подставляется в самый конец домена, вместо $1 в строке https://mousedc.ru$. В кармане находится относительный адрес запрашиваемой страницы (то есть без домена).

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

RedirectMatch 301 (.*\. product/([0-9]+)/?$ product/index.php?id=$1 [L]

При таком правиле пользователь будет заходить на страницу mousedc.ru/product/5/, а сервер будет возвращать содержание страницы mousedc.ru/product/index.php?id=5.

В конце правила можно заметить квадратные скобки. В эти скобки [ ] ставятся флаги. Можно поставить один флаг, к примеру, [L] и несколько флагов через запятую [NC,R=301,L]. Приведём значения самых популярных из них:

  • R — вызывает редирект. Можно казать после этого флага код ответа сервера, например [R=301]
  • L — останавливает процесс изменения адреса. Означает, что следующие RewriteRule после этой строчки не будут выполнены
  • N — перезапускает преобразование адреса заново, начиная с первого правила. Но на этот раз подставляется адрес, изменённый в процессе проделанных преобразований. Будте осторожны, чтобы не сделать бесконечный цикл
  • C — если следующее после этого правило не выполняется, то преобразование будет прервано. products/(.*)$ /products.php [L,R=301]

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

    Была ли эта статья полезна? Есть вопрос?

    Закажите недорогой хостинг Заказать

    всего от 290 руб

    Как настроить 301 редиректы в файле .htaccess – примеры и основные правила правильных 301 редиректов для сайта

    Автор статьи: Сергей Трофимов , Ведущий SEO аналитик

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

    Комментарий

    Если требуется написать комментарий, то необходимо перед ним поставить #, тогда всё, что написано после этого символа не будет учитываться

    # комментарий

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

    Redirect 301 /contacts. — указание начала строки.

    $ — символ конца строки.

    \w — буква, цифра или подчёркивание _.

    \d — заменяет любую цифру.

    \D — заменяет любой символ, но не цифру.

    [0-9] — заменяет любую цифру.

    [a-z] — любая буква от a до z (весь латинский набор символов) в нижнем регистре.

    [A-Z] — любая буква от A до Z в ВЕРХНЕМ регистре.

    [a-zA-Z] — любая буква от a до Z в любом регистре.

    [a-Z] — то же самое.

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

    • L — флаг Last, указывающий приостановку формирования URL-адреса, так что после него строка считается окончательной;
    • NC — флаг NoCase, за счет которого отключается проверка регистра символов, если правило срабатывает;
    • R — флаг Redirect необходим для остановки изменения URL-адреса, он возвращает прежний результат. Обычно используется значение R=301, но встречаются и другие вариации для временных перенаправлений (302, MOVED TEMPORARY).

    Руководство для начинающих по созданию перенаправлений в файле .htaccess

    Опубликовано: 9 июня 2021 г. | | на Абдул Рехман

    Изображение

    Изображение

    с сайта Pixabay

    Испытывали ли вы когда-нибудь необходимость изменить конфигурацию вашего веб-сайта, работающего на веб-сервере Apache, не имея root-доступа к файлам конфигурации сервера ( httpd.conf )? Для этого и нужен файл .htaccess .

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

    [Вам также может пригодиться: 6 навыков системного администратора, которые нужны веб-разработчикам]

    Распространенное использование файла .

    htaccess

    Файл .htaccess имеет несколько вариантов использования. Наиболее распространенные примеры:

    • Перенаправления для определенных URL-адресов
    • Загрузить пользовательские страницы ошибок, например страницы 404
    • Заставьте ваш веб-сайт использовать HTTPS вместо HTTP
    • Разрешить или запретить определенным IP-адресам доступ к вашему веб-сайту
    • Защитите паролем определенные каталоги на вашем сервере

    Когда не использовать .htaccess?

    Файл .htaccess обычно используется, когда у вас нет доступа к файлу конфигурации основного сервера httpd.conf или конфигурации виртуального хоста, что происходит только в том случае, если вы приобрели виртуальный хостинг. Вы можете достичь всех вышеупомянутых вариантов использования, отредактировав файл(ы) конфигурации основного сервера (например, httpd.conf ) или файлы конфигурации виртуального хоста, поэтому вам не следует использовать . htaccess , когда у вас есть доступ к эти файлы. Любая конфигурация, которую вам нужно поставить в .htaccess можно также эффективно добавить в раздел вашего основного сервера или файлов конфигурации виртуального хоста.

    Причины избегать использования файлов .htaccess

    Есть две причины избегать использования файлов

    .htaccess . Давайте рассмотрим их поближе.

    Первый : Производительность — когда AllowOverride настроен на разрешение использования файлов .htaccess , httpd будет искать .htaccess файлов в каждом каталоге, начиная с родительского каталога. Это повлияет на производительность, независимо от того, используете вы его или нет. Файл .htaccess загружается каждый раз, когда документ запрашивается из каталога.

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

    /public_html/test_web/content , httpd необходимо искать следующие файлы:

    • /.htaccess
    • /public_html/.htaccess
    • /public_html/test_web/.htaccess
    • /public_html/test_web/content/.htaccess

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

    Второй : Безопасность — предоставление пользователям разрешения на внесение изменений в файлы .htaccess дает им полный контроль над конфигурацией сервера этого конкретного веб-сайта или виртуального хоста. Любая директива в файле

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

    Включить файл .htaccess

    Чтобы включить файл .htaccess , вам необходимо иметь права sudo/root на сервере.

    Откройте файл конфигурации httpd вашего веб-сайта:

    /etc/httpd/conf/test.conf

    Вы должны добавить следующую директиву конфигурации в файл виртуального хоста сервера, чтобы разрешить файл .htaccess в каталоге DocumentRoot . Если следующие строки не добавлены, Файл .htaccess не будет работать:

     
    <Каталог /var/www/test.com/public_html>
    Индексы опционов FollowSymLinks
    Разрешить переопределить все
    Требовать все предоставленные
     

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

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

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

    Если вы хотите сделать полное перенаправление на другой домен, вы можете установить следующее:

     # Перенаправление на другой домен
    Перенаправление 301 "/service" "https://newdomain.com/service" 

    Если вы просто хотите перенаправить старый URL-адрес на новый URL-адрес на том же хосте:

     # Перенаправление на URL-адрес в том же домене или хосте
    Перенаправление 301 "/old_url.html" "/new_url.html"
    Загрузить пользовательскую страницу ошибки 404 

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

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

     ErrorDocument 404 /error/pagenotfound.html 

    Вы должны изменить /error/pagenotfound.html на местоположение вашей страницы 404.

    Принудительное использование HTTPS вместо HTTP для вашего веб-сайта

    Если вы хотите принудительно использовать HTTPS на своем веб-сайте, вам необходимо использовать модуль RewriteEngine в файле .htaccess . В первую очередь необходимо включить модуль RewriteEngine в файле .htaccess и затем указать условия, которые вы хотите проверить. Если эти условия выполняются, вы применяете правила к этим условиям. 9(.*)$ https://www.test-website.com/$1 [R=301,L]

    Пройдемся по каждой строке.

    RewriteEngine on включает модуль RewriteEngine . Это необходимо; в противном случае условия и правила не будут работать.

    Первое условие проверяет, введено ли www . [OR, NC] означает без регистра , что означает, даже если введенный URL-адрес содержит сочетание букв верхнего или нижнего регистра.

    Затем он проверяет, был ли уже введен протокол HTTPS пользователем. %{https} off означает, что протокол HTTPS не использовался.

    Когда RewriteCond удовлетворяется, мы используем RewriteRule для перенаправления URL-адреса на HTTPS. Обратите внимание, что в этом случае все URL-адреса будут перенаправляться на HTTPS при любом запросе.

    [ Бесплатное руководство от Red Hat: 5 шагов к автоматизации вашего бизнеса. ] 

    Подведение итогов

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

    Ознакомьтесь со статьями по теме Включить системного администратора

    Изображение

    6 навыков системного администратора, которые нужны веб-разработчикам

    Разработчики не работают в вакууме. Вот навыки системного администратора, которые могут облегчить жизнь любого веб-разработчика.

    Изображение

    Настройка веб-сервера для использования HTTPS

    Простая статья о настройке веб-сервера HTTPS с сертификатами OpenSSL.

    Темы: линукс Администрирование Linux Веб-серверы  

    Как перенаправить мой сайт с помощью файла .htaccess?

    Последнее изменение: 6 марта 2020 г.

    Обзор

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

    READ ME FIRST

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

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

    Эта статья предоставлена ​​в качестве любезности. Установка, настройка и устранение неполадок сторонних приложений не входят в объем поддержки, предоставляемой (mt) Media Temple. Пожалуйста, найдите минутку, чтобы просмотреть Заявление о поддержке.

    Инструкции

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

    ПРИМЕЧАНИЕ:

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

    2. Отредактируйте содержимое файла htaccess.txt. Ниже приведены некоторые примеры редиректов, которые вы можете использовать. Они помечены в соответствии с тем, какие действия они будут выполнять.

    301 (Постоянный) Перенаправление:

    Используйте перенаправление 301 .htaccess, чтобы на постоянной основе указать всему сайту другой URL-адрес. Это наиболее распространенный тип перенаправления, который полезен в большинстве ситуаций. В этом примере мы перенаправляем на домен «example.com».

    При добавлении следующего в файл .htaccess вашего веб-сайта обязательно замените example.com своим собственным доменным именем.

     # Это позволяет вам перенаправить весь ваш сайт на любой другой домен.
    Перенаправление 301 / http://example.com/
     
     
    302 (Временный) Перенаправление:

    Перенаправить весь сайт на другой временный URL-адрес. Это полезно для целей SEO, когда у вас есть временная целевая страница и вы планируете вернуться к основной целевой странице позже:

     # Это позволяет перенаправить весь ваш веб-сайт на любой другой домен.
    Перенаправление 302 / http://example. com/
     
     
    Перенаправить index.html в определенную подпапку:
     # Это позволяет перенаправить index.html в определенную подпапку
    Перенаправить /index.html http://example.com/newdirectory/
     9/?$ /папка2/
     

     
    Перенаправление на определенную индексную страницу:
     # Предоставить конкретную индексную страницу (установить обработчик по умолчанию)
    DirectoryIndex index.html
     
     
    Перенаправить сообщение об ошибке:

    Вместо запроса страницы с ошибкой 404 Not Found сайт перенаправит на домашнюю страницу:

     # Перенаправить страницы с ошибкой 404 на домашнюю страницу 
    ErrorDocument 404 http://example.com /
     
    Перенаправить несуществующую страницу на index.php
     # Перенаправить несуществующие страницы на index.php 
    Options +SymLinksIfOwnerMatch RewriteEngine включен RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d Правило перезаписи. /index.