Авторизация:
Имя:

Пароль:

Поиск по сайту:

Поделиться:

Подписка на новости

Введите Ваш email:


Разделы:

рейтинг статьи: 4/5; голосов: 7; комментариев: 0

Главная > Создание сайта > Оптимальная настройка файла htaccess

17.08.2016

Оптимальная настройка файла htaccess

настройка htaccessВсе, кто однажды переходит с бесплатных хостингов на платные, сталкиваются с необходимостью настройки этого самого хостинга. Как известно, именно от правильной настройки сервера, на котором находится ваш сайт, зависит успешность вашего интернет-проекта. Так как многие не могу напрямую управлять настройками сервера, а также настройками PHP через php.ini, есть возможность настроить сервер через файл htaccess. Сегодня ответим на вопрос: Как настроить htaccess?
Перед тем, как правильно настроить htaccess, давайте определимся, что это такое:

Справка

.htaccess – это конфигурационный файл, который позволяет управлять настройками серверов, работающих на Apache. Настраивать сервер можно, как для всего сайта, так и для отдельных папок, находящихся на одном сервере.

Оглавление:
Определение основных опций сервера
Как сделать редирект в htaccess
Директива DirectoryIndex
Настройка часового пояса, кодировки в htaccess
Настройка свойств PHP
Переопределение типов файлов
Архивация данных
Кэширование данных
Назначение страниц ошибок
Заключение

Определение основных опций сервера

Определение основных  опций сервера

Один авторитетный ресурс утверждает, что определение данных функций является обязательным для всех. Я так не считаю. Потому что эти опции по умолчанию выставлены на всех серверах Апачи, они выставлены для всех среднестатистических ресурсов. И если вы считаете, что ваш не отличается от подобных ресурсов, то вам обязательно нужно их изменить в файле .htaccess.
Раз вы так считаете, и так считает авторитетный интернет-ресур, то давайте их рассмотрим подробнее:

 - ExecCGI – она отвечает за запуск CGI-скриптов. Запрет на запуск скриптов повышает защищенность вашего сайта.

 - Indexes  - если в папке нет индексного файла, то вы не сможете просмотреть содержимое этой папки. Если обратится к этому каталогу, то сервер вам выдаст код ошибки 403. Если же включить эту опцию и изменить на +Indexes, и в каталоге  нет индексного файла, и обратиться к этому каталогу через адресную строку, то сервер вам покажет содержимое каталога.

-Includes – запрет на SSI (Server Side Include). Вместо этого можно разрешить SSI без запуска скриптов опцией IncledesNOEXEC.

+FollowSymLinks – разрешает использовать ссылки на файлы за пределами каталога.

Иерархия опций

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

К оглавлению

Как сделать редирект в htaccess

Существует два вида переадресации в htaccess:

  1. Простая переадресация
  2. Сложная переадресация

Простой редирект в htaccess

Это пример простой переадресации при помощи директивы Redirect. В данном случае применяется 301 редирект. Происходит переадресация с мой_сайт.org на www.мой_сайт.org.

Во второй строке примера происходит редирект страницы мой_сайт.org/download.html на http://www.мой_сайт.org/dist/download_info.html.

Третья строка передает код ответа сервера 301, это значит, что переадресация произошла через 301 редирект, то есть, навсегда.

Ниже представлена таблица кодов ответов сервера 3хх Redirect:

таблица кодов ответов сервера 3хх

Ниже представлен синтаксис директивы Redirect:

синтаксис директивы Redirect

 

Переадресация при помощи директивы mod_rewrite

Директива mod_rewrite – это мощный инструмент преобразования URL. Для него возможно любое преобразование URL, в зависимости от условий.

Рассмотрим 301 редирект между доменами с WWW и без него:

пример 301 редирект домена

В данном примере происходит 301 редирект с сайта без www на сайт c www, что будет полезно для склейки сайтов при обходе поискового робота.

Теперь подробнее:

<IfModule mod_rewrite.c> - эта проверка не является обязательной, но на некоторых Apache модуль mod_rewrite может быть отключен и если не будет этой проверки, то сервер выдаст ошибку 500, и сайт не будет загружаться.

RewriteEngine on – имеет синтаксис ON или OFF. По умолчанию OFF. Включается механизм преобразования URL-адресов

RewriteCond – это условие для начала преобразования, то есть, определяются необходимые условия для выполнения RewriteRule

RewriteRule – это сам механизм преобразования URL-адресов

R=301 – использовать 301 редирект на новый адрес

L – остановит использования правила

В данном примере происходит проверка запроса адреса сервера (HTTP_HOST). Если условие верно и адрес соответствует ваш_сайт.ru, тогда происходит преобразование адреса в http://www.ваш_сайт.ru, и сервер выдает клиенту именно преобразованный URL.  Загрузка происходит с преобразованного адреса. Таким образом, происходит редирект домена на домен с WWW.

Теперь для поисковых роботов стало ясно, какой из вариантов сайта (с WWW и без него) является основным зеркалом, не будет происходить дублирование главной станицы при индексировании. Таким образом, произошла склейка сайта.

К оглавлению

 

Директива DirectoryIndex

При загрузке сайта, по умолчанию первым загружается файл Index.php или Index.html. в случае его отсутствия и активации опции +Indexes в htaccess, вы увидите каталог сайта. Директивой DirectoryIndex можно назначить индексный файл, тот файл, который будет загружаться по умолчанию.

Например:

Директива DirectoryIndex

В данном примере файлом по умолчанию назначен mainpage.html. То есть, при вводе в адресную строку браузера адреса сайта, загрузка сайта начнется с файла mainpage.html, с файла, указанного в директиве DirectoryIndex.

В DirectoryIndex можно указать несколько файлов:

В DirectoryIndex можно указать несколько файлов

В этом случае загрузка будет начинаться с файла index.html. если его нет на сервере, то загрузка начнется с index.htm, если и его нет, то с файла index.php. Можно указать любое количество файлов загрузки, ограничений по этому параметру нет.

К оглавлению

 

Настройка часового пояса, кодировки в htaccess

В некоторых случаях есть необходимость в явном указании часового пояса и кодировки сайта. В некоторых версиях Апачи были проблемы с часовым поясом, из-за этого не работали функции времени в PHP. Для подстраховки рекомендуется устанавливать эти параметры в htaccess.

Пример:

Настройка часового пояса, кодировки в htaccess

ServerSignature Off – отключает подпись сервера в ответах на коды ошибок.

К оглавлению

 

Настройка свойств PHP

В большинстве случаев хостер закрывает доступ к файлу php.ini, но у пользователя возникает острая необходимость изменить некоторые свойства PHP, например лимит на объем загрузки файла.

Настройка свойств PHP в htaccess

upload_max_filesize– дает разрешение на загрузку файлов до 32 Мб. В стандартных настройках php.ini разрешается загрузка файлов размером от 8 до 16 Мб

post_max_size – устанавливает размер постинга 10 Мб. По умолчанию – 2 Мб

max_execution_time – устанавливает время на выполнение скриптов в PHP. В стандартном PHP.ini значение это равно 30 секундам. Это нужно, если в работе используются сложные скрипты, на выполнение которых нужно времени больше, чем 30 секунд.

К оглавлению

 

Переопределение типов файлов

Это нужно, если на сервере произошел сбой и нужно научить Apache различать типы файлов. Также пригодится, когда нужно подменить одни типы файлов на другие. Имеется в виду, что файлы с одним расширением могут работать, как файлы с другим расширением.

Например:

Переопределение типов файлов в htaccess

В первой строчке примера происходит подмена php-файлов на html-файлы. То есть, файл с расширением php может иметь расширение html, но работать как php.

В третьей и последующих строках происходит назначение типов файлов, к каким типам относятся с файлы с определенным расширением. Для Java – с расширением .js и так далее.

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

К оглавлению

 

Архивация данных

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

На серверах хостингов могут быть два модуля сжатия данных:

  1. Модуль сжатия mod_deflate
  2. Модуль сжатия mod_gzip

Модуль сжатия mod_deflate

Модуль сжатия mod_deflate

Как видно из примера в директиве AddOutputFilterByType DEFLATE нужно указывать типы файлов, которые должны быть заархивированы для передачи клиенту. Стоит сразу заметить, что в этот список нет необходимости добавлять файлы jpeg, gif, avi, flv, так как эти форматы уже и есть своего рода архивы. Ускорения при сжатие подобных типов файлов не будет.

Модуль сжатия mod_gzip

Модуль сжатия mod_gzip

Данный модуль более гибкий для настройки, так как можно указывать отдельно маски файлов для сжатия.

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

К оглавлению

 

Кэширование данных

Для ускорения загрузки клиентом данных с сервера активно используется кэширование данных. Кэширование можно организовать при помощи синтаксиса языка PHP, но можно настроить его в файле htaccess.

Для этих целей применяется два модуля:

  1. mod_headers
  2. mod_expires

Модуль mod_headers

Этот модуль позволяет установить в заголовке ответа сервера правила кэширования для разных типов файлов.

Сжатие данных при помощи mod_headers

Как видно из примера для файлов с расширением html, htm установлен срок хранения в кэше браузера один день (время указывается в секундах). Срок хранения в кэше можно указать для всех типов файлов.
Для php-файлов кэширование было отключено вообще.

Модуль mod_expires

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

Сжатие данных при помощи mod_expires

Можно использовать любой из этих модулей, все зависит от того, какой из них установлен на сервере.

В качестве личного примера хочу заметить, что некоторые хостинги работают с двумя серверными языками Apache и nginx. В моем случае за кэширование статических данных отвечает Apache, а за кэширование динамических – nginx. Поэтому настройка кэширования в htaccess для динамических страниц под Apache не дает никакого результата. После проверки настроек кэширования динамических данных у хостера, было выявлено, что по умолчанию сервер настроен оптимально, для подобных страниц, и в дополнительных настройках не было надобности. Примером является хостинг сайтов Beget.ru

К оглавлению

 

Назначение страниц ошибок

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

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

Назначение страниц ошибок в htaccess

Стоит заметить, что для ошибок с кодом 4xx можно сделать динамические страницы на PHP, а для ошибок 5хх лучше сделать статические страницы на html, так как подобные ошибки являются ошибками сервера, и при таких ошибках php не будет загружаться в браузер.

К оглавлению

Заключение

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

2290

Оцените статью:

1 2 3 4 5
рейтинг: 4/5; голосов: 7

Зарегистрируйтесьили войдите под своим именем чтобы оставить комментарий