Настройка некоторых директив файла .htaccess

Печать

2361

Тонкая настройка файла .htaccess.
Например, нужно запретить листинг директорий, некоторые директории закрыть паролем и переназначить индексный файл.
С этого места будем разбирать подробнее...

За все данные функции отвечает веб сервер apache, ну а так как нам нельзя править конфигурационный файл httpd.conf, будем править файл .htaccess. В него можно вносить практический все те же самые директивы что и в конфигурационный файл. Далее я опишу несколько директив и как с ними работать. Сам файл находится в любой из поддиректорий сайта.Пример:
www/
www/temp/
www/temp/image
Если разместить этот файл в самом корне, то есть в www, то он будет действовать на все поддиректории и файлы.
Если в www/temp/ то только на эту директорию, файлы и поддиректории. И так далее. Так же можно использовать в разных директориях разные .htaccess файлы.

1) Переопределение кодировки html документов
Предположим Web сервер отдает все файлы в кодировке windows-1251, нам нужно чтобы он их отдавал в кодировке utf8. Для этого добавляем такую строчку:

AddType "text/html; charset=utf8" .html .htm .shtml
Если у вас файлы в нескольких кодировках, то нужно добавить строку:
AddDefaultCharset Off
И в каждом html документе указывать нужную вам кодировку.

2) Закрытие директории паролем
Некоторые директории иногда приходиться закрывать паролем (например это может быть директория админки сайта)
Это можно легко сделать с помощью данного файла.
В каталоге, к которому нужно закрыть доступ надо создать файл с таким содержанием:
AuthType Basic
AuthName "Some Name"
AuthUserFile /home/u123/.htpasswd
require valid-user
AuthUserFile — указывает полный путь к файлу паролей.
u123 — это домашний каталог пользователя, его можно узнать у хостера.
В этом файле должны быть пароли в таком виде: user:passwords.
Теперь рассмотрим как создать этот файл в unix shell:
- htpasswd -mbc .htpasswd user1 123456789 - создает файл .htpasswd и вносит
  в него пользователя User1 с паролем 123456789
- htpasswd .htpasswd user2 - добавляет в файл .htpasswd пользователя User2
  и показывает сообщение о вводе для данного пользователя пароля.

3) Переопределение индексного файла
Нужно чтобы по умолчанию открывался не index.php, а допустим, myindex.php
Для этого добавим вот такую строчку:
DirectoryIndex myindex.php

4) Запрет и разрешение листинга директории
Иногда сервер выдает вместо главной страницы список файлов, чтобы этого не происходило нужно в файле .htaccess прописать диррективу:
Options +Indexes
Или наоборот для разрешения листинга можно использовать:
Options -Indexes

5) Задание собственных страниц ошибок
Это делаться очень просто, допустим нам нужно обработать 2 ошибки: 404, 403.
404 — Документ не найден
403 — Доступ запрещен
Для обработки этих ошибок нужно написать следующие строки:
ErrorDocument 404 /NotFound.php
ErrorDocument 403 /AccessDenide.php

6) Запрет доступа для некоторых IP
Иногда возникает необходимость закрыть либо частично, либо полностью свой сайт от какого-либо IP адреса.
Это делается так:
Order Allow,Deny
Allow from All
Deny from 192.168.192.1

Теперь когда будет заходить пользователь с таким IP, он сразу же получит ошибку 403 — «Доступ закрыт».
Или же наоборот, открыть доступ только с определенного IP:
Order Allow,Deny
Deny From All
Allow from 192.168.192.1