Управление с помощью .htaccess. Примеры

Если вы выбрали Linux-хостинг, то с 99% вероятности сможете использовать htaccess - что это такое, зачем нужен, основы использования для конфигурирования вебсервера.
Управление с помощью .htaccess. Примеры

Когда вы - не администратор

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

Основная идея htaccess

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

Основные применения

  • Управление доступом.
    Можно закрыть каталоги/файлы паролем, ограничить доступ к ним по IP-адресу или вообще запретить доступ.
  • Переписывание url
    Использование понятных и приятных для человека адресов (ЧПУ) вместо некрасивых, зато понятных машине. Например,

    https://prohostings.ru/pro-saity/vybor-xostinga.html
    

    вместо

    https://prohostings.ru/?p=53
    
  • Перенаправление (редирект)
    Можно перенаправить запрос на другой адрес. Например, если запрашивается определенный файл, или если запрос сделан с определенного диапазона IP-адресов, или в зависимости от того, с какой страницы пришел пользователь.

  • Обработка ошибок
    К примеру, можно настроить знаменитую 404 страницу.

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

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

Редирект по User Agent для определенного браузера

Делаем 301-й редирект, т.е. постоянный, перманентный редирект для браузера Internet Explorer 11:

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} Trident/7.0
RewriteRule ^bugaga.html$ http://example.com/blabla/ie.html [R=301]

Блокировка нежелательных ботов

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


# Блокировка USER AGENTS
RewriteEngine on
 RewriteCond %{HTTP_USER_AGENT} MegaIndex [NC,OR]
 RewriteCond %{HTTP_USER_AGENT} 200PleaseBot [NC,OR]
 RewriteCond %{HTTP_USER_AGENT} Baiduspider [NC,OR]
# Чтобы добавить сюда новый UA пишите:
# RewriteCond %{HTTP_USER_AGENT} YourBot[NC,OR]
 RewriteCond %{HTTP_USER_AGENT} Ezooms [NC]
RewriteRule !^robots\.txt$ - [F]

# Блокировка пустых USER AGENTS
RewriteCond %{HTTP_USER_AGENT} ^-?$
RewriteRule ^ - [F]

Htaccess редирект с www

По умолчанию ваш сайт будет доступен с двух адресов — с www и без www. К примеру http://www.prohostings.ru/ и http://prohostings.ru/. Чтобы при доступе на первый вариант написания адреса автоматически осуществлялось перенаправление на второй адрес можно использовать следующую конструкцию в файле .htaccess:


RewriteEngine On
# ...
# Редирект с домена с www. на домен без www.
RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^hostingreview\.ru [NC]
RewriteRule (.*) http://prohostings.ru/$1 [R=301,L]

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


RewriteEngine On
# ...
# Редирект с домена с www. на домен без www.
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http%{ENV:protossl}://%1%{REQUEST_URI} [L,R=301]

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

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

Идея .htaccess - управлять настройками Apache для отдельных директорий если вы не обладаете правами системного администратора. Если же у вас свой выделенный сервер - неважно, виртуальный он или физический, то пользоваться .htaccess не нужно. Хотя бы по той простой причине, что все то же самое вы можете сделать в главном конфигурационном файле (обычно - httpd.conf). Однако есть пара причин поважнее.

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

Это, кстати, и есть те причины, по которым некоторые хостинг-компании не предоставляют услугу .htaccess своим клиентам. Хотя при хорошем администрировании дело того стоит.

Итого:

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


Может будет интересно?

Панели управления хостинга

Панели управления хостинга

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

Что такое SSL-сертификат

Что такое SSL-сертификат

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

Основы HTML и CSS

Основы HTML и CSS

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

Вебсервер

Вебсервер

Вебсервер - это программа, которая запущена на вашем сервере (там, где расположен ваш сайт). Именно она договаривается с браузером, то есть...

Топ хостинг-провайдеров

На основе средней оценки и общего количества голосов