14

Самый полезный файл на вашем сайте

Работаю в хостинге: размещаем сайты пользователей на своих серверах.


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


Даже если вы не пользуетесь хостингом, предположу, что эта информация может быть познавательна.


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


В этом случае на помощь веб-мастеру приходит файл дополнительной децентрализованной настройки веб-сервера. Называется он «.htaccess» (обратите внимание на точку в начале названия файла, её наличие для его корректной работы обязательно).

Самый полезный файл на вашем сайте IT, Познавательно, Htaccess, Хостинг, Длиннопост

ВНИМАНИЕ! AHTUNG! WARNING! УВАГА! 注意!

Перед тем, как продолжить, сразу расставлю все точки над «ё»: файл проверенно работает с веб-сервером apache (и частично с некоторыми другими).


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


Вольное определение.

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


Примерная схема работы.

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

Если директива из файла веб-сервером по какой-то причине не распознаётся, то работа веб-сервера с сайтом экстренно прерывается, и веб-сервер возвращает клиенту страницу со статусом 500 - «Внутренняя ошибка сервера» (Internal server error).


Что умеет этот файл?

Очень кратко по самым часто используемым возможностям.


1. Управлять ЧПУ.

Красота сайта кроется не только в его дизайне, но в том числе и во внешнем виде ссылок на внутренние страницы сайта. Набор правильных директив в файле .htaccess позволит избавиться в адресной строке от конструкций вида:

http://экзампл.рф/index.php?a=view&m=13321&ex=mobile

и сделать её такой:

http://экзампл.рф/mobile/13321/

Пример на рабочем сайте:

Самый полезный файл на вашем сайте IT, Познавательно, Htaccess, Хостинг, Длиннопост

2. Разграничение доступа к папкам.

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

#################

AuthName "Resticted area! PIKABU users only!"

AuthType Basic

AuthUserFile /home/u12345/example.ru/pass/.htpasswd

require valid-user

#################


3. Запрет на доступ к определённым файлам и запрет хотлинкинга.

Если, например, сайт генерирует файлы с отчётами или резервные копии и складывает их в какую-то папку, то через htaccess можно запретить доступ к таким файлам, чтобы скачивать их можно было только через FTP-доступ или просаматривать через серверную консоль. Также htacces позволяет запретить так называемый хотлинкинг, когда файлы с вашего сайта (к примеру, картинки) подключаются на страницах другого сайта.

Так запретим хотлинкинг картинок:

#################

RewriteEngine on

RewriteCond %{HTTP_REFERER} !^$

RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?экзампл.рф [NC]

RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]

#################


4. Собственные страницы ошибок.

Стандартные страницы веб-сервера с ошибками (403 — Forbidden, 404 — Not Found и т. д.) просты и лаконичны. Но иногда хочется чуть сложнее и при этом красивее.

Самый полезный файл на вашем сайте IT, Познавательно, Htaccess, Хостинг, Длиннопост

5. Перенаправление посетителя на сторонний ресурс, внутреннюю страницу или другой протокол при каких-то особых условиях.

Подключили SSL и нужно заставить всех пользователей ходить на ваш сайт именно по безопасному протоколу? Можно сделать так, что он сам этого не заметит:

#######################################

RewriteEngine On

RewriteCond %{HTTPS} !=on

RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [NC,R=301,L]

#######################################


6. Переопределение стартовой страницы сайта.

Для любителей назвать индексный файл this_file_starts_my_website_view.php

#######################################

DirectoryIndex this_file_starts_my_website_view.php

#######################################


7. Запрет доступа к всему сайту или определённым его страницам для определённого пользователя (или группы пользователей, объединённых общим признаком). А также разрешение доступа определённому пользователю к определённым областям сайта:

Самый полезный файл на вашем сайте IT, Познавательно, Htaccess, Хостинг, Длиннопост

Резюмируя.

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

Файл также умеет:

- заставлять браузер кэшировать содержимое сайта на опеределённое время;

- архивировать передавыемые пользователю данные для сокращения потребляемого трафика;

- управлять роботами различных поисковых систем;

- изменять некоторые настройки используемых языковых интерпретаторов (php, perl, python и т.д.);

И многое-многое-многое-многое другое.


Тема весьма и весьма широкая, поэтому оставлю некоторые полезные ссылки для самостоятельного изучения.  Я постоянно использую их сам, т.к. весь объём этих данных в голове не укладывается.

http://www.htaccess.net.ru/ — про htaccess по-русски и в понятной форме изложения.

http://htaccess.ru/cms/ — стандартные файлы htaccess для некоторых распространённых CMS.

http://www.opennet.ru/base/faq/htaccess_howto.txt.html — для олдфагов.

https://habrahabr.ru/post/154643/ — для профессионалов.


Если про что-то забыл, не ругайте сильно. Есть вопросы? Добро пожаловать в комментарии.