.htaccess - ты кто такой?

28-08-2017
.htaccess - ты кто такой?

Для большинства новичков этот зверь по-прежнему остается неизведанным. Они не понимают, как вообще с ним работать, а также не до конца осознают всю важность наличия данного файла. Если вы владелец сайта и хотите обезопасить свое детище, то вы вряд ли сможете найти инструмент лучше, чем правильно настроенный файл «.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]. Вы наверняка ощутили всю мощь, которой обладает столь небольшой, но очень важный элемент. Это только верхушка айсберга, но если вы хотите большего, то есть несколько полезных ресурсов:

Рейтинг записи
Поделиться

Читайте также

Меню-гамбургер

Меню-гамбургер

19-06-2017

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

Конструкторы сайтов

Конструкторы сайтов

08-05-2017

Конструкторы сайтов по своей сути - отличная вещь. С их помощью можно создать сайт всего лишь за 1 час, а то и быстрее. Но вот с позиции веб-разработчика и SEO-оптимизатора, нет ничего хуже сайтов, созданных на конструкторах.

ТОП-10 правил копирайтинга

ТОП-10 правил копирайтинга

07-05-2017

Немного юмора и одновременно полезной информации. Данные правила пригодятся не только копирайтерам, но и предпринимателям или SMM-щикам.