Настройка htaccess
Большинство сайтов размещают на серверах Apache, а также на подобных им. В этих серверах многие конфигурации определяются при помощи специального файла — htaccess. Если вы научитесь управлять его содержимым, то сумеете настроить сервер индивидуально хоть для каждого каталога. Кроме того, зная нужные директивы и синтаксис конфигурационного файла htaccess, вы сможете оптимизировать свой ресурс и улучшить его позиции в поисковой выдаче.
Содержание
Как происходит настройка конфигурационного файла htaccess
Правила настройки файла конфигураций htaccess предельно просты: вы задаете в нем определенные директивы, а на сервере происходит их последующая обработка.
При этом важно соблюдать синтаксис и не выставлять все известные опции внутри файла htaccess, а вписывать их по мере необходимости. Учитывайте приоритетность конфигураций: опции, что находятся выше в htaccess, обрабатываются сервером первыми.
Важно также уметь размещать файл htaccess. Дело в том, что можно создать несколько документов htaccess. Главным будет считаться тот, который размещен в корневом каталоге сервера. Но если в какой-либо папке имеется свой htaccess, то в ней и во внутренних каталогах будут действовать правила именно этого файла, а не главного. Это основной нюанс, который вам следует запомнить.
Правила создания файла htaccess
Вам следует хорошо разобраться в том, какие бывают директивы внутри файла htaccess, а также как соблюдать синтаксис этого документа. Если вы будете игнорировать правила оформления файла htaccess — вписывать неправильные директивы или нарушать синтаксис, то заданные настройки не заработают, и на сайте появится ошибка под номером 500. Она свидетельствует о том, что где-либо в htaccess допущена ошибка и ее нужно убрать.
Синтаксис файла конфигураций предполагает наличие в начале строк решетки «#». Она необходима для того, чтобы закомментировать определенную функцию, если понадобится. Закомментировать — это означает деактивировать. Чтобы это сделать, нужно убрать пробел между символом решетки и началом строки. Тогда сервер будет воспринимать такие строки не как директивы, а как поясняющие комментарии к ним. Для устранения ошибки 500, которая в начале работы с htaccess будет у вас выскакивать довольно часто, вам понадобится поочередно закомментировать все строки файла, пока ошибка не пропадет. Тогда вы сможете узнать, где в конфигурациях «проблемная» зона.
Многие директивы, которые есть в htaccess, не понадобятся вам для настройки этого файла. Одни из самых нужных опций — это директивы перенаправления ссылок. Чтобы ими пользоваться, у вас на сервере должен быть активирован модуль mod_rewrite. Он позволит вам использовать команды, такие как RewriteEngine, RewriteCond и RewriteRule. Это неразлучное «трио». Первая директива нужна для запуска модуля преобразования ссылок mod_rewrite, вторая — для указания условия переадресации, а третья — для написания правила перенаправления URL.
Использовать директивы переадресации лучше вместе с указанием редиректа. Это объяснение для поисковых систем, чтобы они не восприняли переадресацию, как попытку накрутить посетителей сайта. Для постоянных перенаправлений вам понадобится редирект 301, а для временных — 302. Вот пример постоянного перенаправления через 301 редирект для сайта — ссылки с WWW автоматически переадресовываются на URL без WWW:
- RewriteEngine On — эта строка при помощи команды «On» активирует модуль mod_rewrite.
- RewriteCond %{HTTP_HOST} ^www.ваш_домен.ru$ [NC] — эта строка указывает условие, что нужно переадресовывать ссылки с WWW.
- RewriteRule ^(.*)$ http://ваш_домен.ru/$1 [R=301,L] — это правило, которое указывает, что переадресовывать необходимо на домен без WWW. Правило сработает только в том случае, если соблюдено условие в пункте 2.
Но для переадресации внутренних страниц из-за изменения их адреса не нужно использовать эту сложную конструкцию из трех строк — достаточно прописать директиву Redirect. К примеру, если вы перманентно переместили страницу /tovar.html на новый адрес — /new_tovar.html, то в файле htaccess вам нужно указать следующее: Redirect 301 /tovar.html http://www.domain.ru/new_tovar.html. Как видите, сначала следует прописать неполный путь к старой странице, а затем указать полный путь к новой. Так вы сможете настроить любой редирект. А если не получается создать перенаправление при помощи указанной директивы, то можете использовать опции, которые были описаны выше.
Другая очень полезная функция файла htaccess — это возможность переопределить страницы ошибок. Как известно, изначально страницы с информацией об ошибках для всех одинаковы. То есть вне зависимости от сайта страница с ошибкой 404 будет выглядеть одинаково, если ее самостоятельно не отредактировать. Внутри файла htaccess вам не придется прописывать дизайн новых страниц ошибок, но вы сможете указать серверу, что теперь в случае возникновения Error, показывать необходимо другой файл html.
Верстать страницы для всех известных ошибок — это неблагодарное дело, поскольку пользы от него мало. Лучше напишите несколько страниц с ошибками, которые встречаются чаще других — это 404, 500, 403 и 401. Из них самая популярная — это 404 ошибка, которая сообщает о том, что файл на сайте не найден. 401-й ошибка — это проблемы с авторизацией пользователя, а 403 — это ограниченный доступ к сайту. Составьте для каждой страницы свой html-файл, а затем пропишите расположение этих документов в htaccess. Например: ErrorDocument 404 http://ваш_домен.ru/errors/404.html. И так для каждой ошибки, которую вы оформили.
Учтите, что создавать свои страницы с ошибками нужно с определенной долей ответственности. Пользователь должен понимать, почему возникла ошибка, и вам следует ему это объяснить на странице. Укажите причины, а также пути решения проблемы. Можете добавить на страницу форму поиска по сайту, либо указать ссылки на другие разделы. Тогда страница с ошибкой не станет пробоиной в потоке трафика на ваш сайт, а превратится в дополнительный его источник.
Многие знают файл конфигураций htaccess как документ, при помощи которого можно ограничить доступ к сайту. В этом деле htaccess действительно вам сильно поможет. Вы сможете создать защиту не только от конкретных пользователей, но и для выбранных вами папок и файлов. Для обеспечения такой защиты, вам нужно использовать директивы Allow from и Deny from. Первая нужна для того, чтобы разрешать доступ, а вторая — чтобы запрещать. Их можно использовать вместе, к примеру, разрешить доступ для всех, но в качестве исключения указать параметр Deny from 132.4.5.6 132.5.4.3. Тогда на сайт смогут зайти все, кроме указанных IP-адресов. По аналогии вы сможете запретить доступ для всех, но через Allow from указать IP тех, кому можно заходить на ресурс.
В самом начале файл htaccess вам понадобится для того, чтобы вы смогли переопределить главную страницу своего сайта. Сделать это весьма просто при помощи директивы DirectoryIndex. После нее нужно указать файл html, который будет считаться главной странице ресурса. Вот пример такой команды в файле конфигураций: DirectoryIndex main.html.
Также вам может понадобиться опция листинга каталогов. Она нужна для того, чтобы пользователи могли просматривать не страницы вашего сайта, а папки сервера и файлы, которые в них есть. Таким образом, вы сможете создать отдельные части сайта, которые будут напоминать FTP-хранилище. Чтобы сделать каталог просматриваемым для посторонних, нужно поместить в него специальный файл htaccess, в котором вы укажите опцию Options +Indexes. Если листинг нужно запретить, то поставьте минус сразу перед словом Indexes. А если нужно скрыть определенные файлы, сделайте это при помощи директивы IndexIgnore.
Что касается защиты ресурса, вам со временем понадобится блокировка хотлинков. Hotlink — это когда вместо того, чтобы загружать к себе на сервер файлы, вебмастера скидывают ссылки на них с посторонних ресурсов. Получается, что файлы не хранятся на сервере вебмастера, а продолжают пребывать на другом хосте. И владелец постороннего сервера страдает, потому что нагрузка на его хост увеличивается, как и число хотлинков на файлы его сайта. Чтобы не стать жертвой спекуляций вашим сервером, вам следует прописать в htaccess правила переадресации, которые запрещают доступ для некоторых сайтов. Вот пример такого правила:
- RewriteEngine on — запуск модуля mod_rewrite.
- RewriteCond %{HTTP_REFERER} заблокированный_домен\.ru [NC] — условие для запрета.
- RewriteRule .* — [F] — правило для запрета хотлинков.
Если сайтов, которые дублируют контент больше, то напишите для каждого свое условие в директиве RewriteCond. Также не забудьте добавить защиту при помощи файла htaccess для отдельных файлов и папок. Если вы подробнее изучите возможности настройки этого документа, то поймете, что можете сделать многое при помощи htaccess. Например, запаролить некоторые файлы.