Настройка веб-сервера с помощью .htaccess 


Настройка веб-сервера с помощью .htaccess

Опубликовано

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

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

На рисунке 1, показана древовидная структура каталогов, и находящиеся в них файлы .htaccess. Директория dir, содержит файл .htaccess (1), все его настройки распространяются как на текущую так и на вложенные папки (dir1, dir11, dir12, dir2, dir3, dir4). Однако директория dir11, настройки будет получать от файл .htaccess (2), и игнорировать .htaccess (1).

 Древовидная структура директорий

Рис 1. Древовидная структура директорий

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

Возможности .htaccess:

  • Запретить/Разрешить доступ к ресурсам
  • Аутентификация при доступе к ресурсам
  • Перенаправление или редирект
  • Смена стартовой страницы
  • Обработка ошибок

Запретить/Разрешать доступ к файлам и папкам

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

Order Deny,Allow
Deny from all 
Allow from 192.168.0.12
Allow from 192.168.0.13
Allow from 192.168.0.14

  • Order Deny,Allow – порядок работы директив, строка указывает что далее будут перечислятся правила: запрещающие (Deny), или разрешающие (Allow);
  • Deny from all – правило запрещающее всем доступ к данному ресурсу.
  • Allow from 192.168.0.12 – правило разрешающее доступ к данному ресурсу с ip адреса 192.168.0.12

 

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

Order Deny,Allow
Deny from all 
Allow from 192.168.0

  • Allow from 192.168.0 –доступ к директории имеют все пользователи сети 192.168.0, т.е. (192.168.0.1-192.168.0.255)

 

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

Order Deny,Allow
Allow from all 
Deny from 192.168.0.12

 

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

Order Deny,Allow
Deny from all

 

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

<Files "test.php">
Order Deny,Allow 
Deny from all
</Files>

  • <Files "test.php"> - в директиве содержится имя файла, к которому применяются нижеследующие параметры. Синтаксис <Files "test.php"> Параметры </Files>. В данном примере показано, как заблокировать доступ для всех, к файлу "test.php".

 

Разрешить доступ к файлу определенной подсети.

<Files "test.php">
Order Deny,Allow 
Deny from all
Allow from 192.168.0
</Files>

 

Запретить доступ к файлам по маске:

<FilesMatch ".(txt|dba)$">
Order Deny,Allow 
Deny from all
</FilesMatch>

  • <FilesMatch ".(txt|dba)$"> - для запрета доступа к группе файлов используется директива FilesMatch. <FilesMatch> параметры </FilesMatch>.
  • ".(txt|dba)$" – маска, по которой определяется правило запрета доступа. В данном примере доступ ограничен к файлам с расширением *.txt, *.dba. Синтаксис “Маска$”

 

Аутентификация при доступе к ресурсам

Подробнее читайте здесь

 

Перенаправление или редирект

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

Redirect [status] URL-local URL-redirect

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

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

  • 301 - документ перемещен постоянно;
  • 302 - документ перемещен временно;
  • 303 - затребованный ресурс можно найти по др. адресу;
  • 410 - убран;

URL- local – локальный адрес директории.

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

Redirect 301 /test http://webpress.uz/
Redirect 301 / http://webpress.uz/

 

RedirectMatch [status] Regular URL-redirect

Директива перенаправляет пользователя, если запрашиваемый документ подходит к маске указанной в опции Regular.

Regular – Маска или регулярное выражение, которое содержит перечень документов, при указании которых происходит редирект.

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

#При запросе документа r.txt, происходит перенаправление 
RedirectMatch (.*)/r.txt$ http://webpress.uz/ 

#При вызове любого php скрипт, происходит перенаправление 
RedirectMatch (.*)/*.php$ http://webpress.uz/

#При вызове любого документа, происходит перенаправления 
RedirectMatch (.*)/*.*$ http://webpress.uz/

 

Смена стартовой страницы

Страницами, которые загружается по умолчанию, является index.php, index.html. Чтобы изменить стартовую страницу, воспользуйтесь директивой .htaccess

DirectoryIndex [перечень страниц]

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

#Стартовая страница переназначена на “r.txt”
DirectoryIndex r.txt

#Перечень из страниц, поиск производится слева направо, первый найденный рабочий документ определяется как стартовый.
DirectoryIndex red.txt test.php index.php

 

Обработка ошибок

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

ErrorDocument, перечень ошибок:

  • 400 Bad Request (Синтаксическая ошибка в запросе пользователя);
  • 401 Unauthorized (Пользователь должен авторизироваться, для просмотра страницы);
  • 403 Forbidden (Доступ к ресурсу запрещен);
  • 404 Not Found (Страница не найдена);
  • 408 Request Time-out (Время запроса истекло);
  • 410 Gone (Ресурс удален навсегда);

ErrorDocument 403 http://site.ru/error/403.html
ErrorDocument 404 http://site.ru/error/404.html