Для большинства новичков этот зверь по-прежнему остается неизведанным. Они не понимают, как вообще с ним работать, а также не до конца осознают всю важность наличия данного файла. Если вы владелец сайта и хотите обезопасить свое детище, то вы вряд ли сможете найти инструмент лучше, чем правильно настроенный файл «.htaccess». Сегодня мы разберем с вами популярные настройки этого файла.
Немного теории:
Данный файл представляет собой обычный текстовый документ с необычным расширением «
.htaccess» (от англ. hypertext access). Он предоставляет возможность изменения конфигурации веб-сервера и настройку работы сервера в отдельных директориях, при этом не предоставляя доступ к главному конфигурационному файлу, тем самым никак не влияет на работу всего сервера.
С его помощью можно:
- установить необходимые права доступа к файлам и каталогам (папкам);
- совершать перенаправление (редирект);
- указывать браузеру, как он должен себя вести при возникновении какой-либо ошибки;
- определять кодировку;
- обрабатывать ошибки и т.п.
Простой редирект (перенаправление)
К примеру, мы перенесли доменное имя или же хотим, чтобы пользователей автоматически перенаправляло на какую-то определенную страницу, избежав при этом замечаний от поисковиков, для этого мы воспользуемся
301-редиректом. Необходимо будет внести следующий код в [.htaccess] (site.com заменить на свой домен):
Redirect 301 /old_page.html http://www.site.com/new_page.html
У нас получается следующая схема
Redirect [status] URL_LOCAL URL_REDIRECT – там, где у нас прописан
[status] нужно указать необходимое для вас значение:
- 301 – если страница перемещена навсегда;
- 302 – если страница перемещена временно;
- 303 – смотреть другой документ;
- 410 – если страница удалена.
В первой части кода мы указываем на тип ошибки, далее указываем ссылку на старую страницу (old_page.html), а затем уже на новую (new_page.html).
Сложные редиректы [mod_rewrite]
[mod_rewrite] – это модуль веб-сервера Apache, способный выполнять множество полезных функций, в том числе и управлять URL’ами. Рассмотрим с вами несколько вариантов его применения:
1.Укажем главное зеркало (перенаправим с www на домен без www):RewriteEngine On #включает работу
RewriteCond %{HTTP_HOST} ^www.mysite\.ru$ [NC] #условие для начала преобразования
RewriteRule ^(.*)$ http://mysite/$1 [R=301,L] #правило преобразования
2. Для повышения безопасности сделаем перенаправление на протокол HTTPS:RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
3. Перенос доменаНаш сайт переехал, для этого нам необходимо сделать перенос домена с http://old-site.ru на http://new-site.ru. Пропишем следующий код в [.htaccess]:
RewriteEngine on
RewriteRule ^(.*)$ http://new-site.ru/$1 [R=301,L]
Таким образом, любой пользователь по запросу http://old-site.ru, будет автоматически перенаправлен на http://new-site.ru/.
Индексная страница
После того, как мы вбили в адресную строку адрес сайта, обычно автоматически открывается index.html, но немного пошаманив, мы можем выводить любую другую страницу. Для этого необходимо прописать следующий код:
#устанавливаем альтернативную страницу
DirectoryIndex about.html
Защита определенного файла
Прописав данный код, при любом обращении к файлу uploads.php будет выдаваться ошибка 403.
#Защищаем файл uploads.php
<files uploads.php ="">
order allow,deny
deny from all
</files>
Определение кодировки
Дабы у пользователей не выводились на экране различные кракозябры при просмотре вашего сайта, необходимо указать используемую кодировку. Самые популярные кодировки – windows-1251 и utf-8. За это отвечает директива AddDefaultCharser, пропишем код:
AddDefaultCharset WINDOWS-1251
Но теперь у нас может возникнуть проблема при загрузке файлов на сервер, и чтобы избежать этой ситуации, необходимо сообщить, чтобы все загружаемые файлы были в той же кодировке:
CharsetSourceEnc WINDOWS-1251
Запрет доступа для всех пользователей, кроме указанных IP-адресов
Если у вас появилась необходимость закрыть сайт от всех пользователей, при этом разрешив его просматривать некоторым IP-адресам, то необходимо добавить следующий код:
ErrorDocument 403 http://www.site.ru #изменить на свой адрес
Order deny,allow
Deny from all
Allow from 223.23.23.223 # IP-адрес, которому разрешен доступ
Allow from 123.23.23.123 # IP-адрес, которому разрешен доступ
Черный список IP-адресов
Если же вам стали докучать спамеры или вам нужно заблокировать какого-либо пользователям, то необходимо добавить следующий код:
allow from all
deny from 145.186.14.122 # запрет для конкретного IP-адреса
deny from 145.186.0.0/120 # блокируем IP диапазон
deny from 124.15. # блокируем подсеть
Защита файлов и папок паролем
Если вам необходимо защитить паролем какой-либо файл или папку на вашем сервере, пропишите следующий код:
#защита паролем файла
<files secure.php=""> # указываем файл, который нужно защитить
AuthType Basic # тип защиты
AuthName «Prompt» #название области, требующей авторизацию
AuthUserFile /pub/home/.htpasswd # местонахождение файла с паролем
Require valid-user # необходимое требование для доступа
</files>
#защита паролем папки
resides
AuthType basic # тип защиты
AuthName «This directory is protected» #название области, требующей авторизацию
AuthUserFile /pub/home/.htpasswd # местонахождение файла с паролем
AuthGroupFile /dev/null # местонахождение файла групп
Require valid-user # необходимое требование для доступа
Как вы заметили из вышенаписанного кода, нам необходимо создать файл с паролями. Создадим файл «.htpasswd», куда запишем пары логин-пароль следующего вида:
user:password
Если мы просто запишем в этот файл пароль, то доступ к данным будет храниться в открытом виде, не самое умное решение, согласитесь. Поэтому потребуется зашифровать наши данные, воспользовавшись
сервисами генерации записей в .htpasswd.
Проверяйте правильность местонахождения файла с паролями, иначе при вводе правильных данных в доступе будет отказано абсолютно всем пользователям.
Итог
Мы рассмотрели с вами наиболее популярные возможности, предоставляемые пользователю специальным файлом [.htaccess]. Вы наверняка ощутили всю мощь, которой обладает столь небольшой, но очень важный элемент. Это только верхушка айсберга, но если вы хотите большего, то есть несколько полезных ресурсов: