Кроссплатформенный веб-сервер Apache является одним из наиболее популярных на данный момент, и свою известность он приобрел благодаря распространению на абсолютно бесплатной основе. Кроме того, этот веб-сервер легко поддается тонкой настройке даже для каждого пользователя или каталога, что также является несомненным достоинством.
Настройка в Apache выполняется при помощи директив, записываемых в файл конфигурации. Основным таким файлом является httpd.conf, и в нем указаны команды и настройки, влияющие на работу сервера целиком, то есть — на всех его пользователей. Также существуют .htaccess — вспомогательные файлы. С их помощью пользователи, не имеющие доступа к httpd.conf, могут изменять настройки веб-сервера в рамках своего сайта или доступного каталога, при этом не затрагивая настройки других пользователей.
Изначально .htaccess вашего сайта расположен в корневой директории. В случае отсутствия, вы можете создать его вручную или при помощи генератора. Второй способ легче, ведь для этого вам не нужно помнить синтаксис и разбираться в правилах написания директив. Тем не менее, вам стоит знать типовые команды .htaccess, чтобы правильно заполнить строки данных при генерировании файла конфигурации.
Как настроить .htaccess — примеры типовых команд
Так как между httpd.conf и .htaccess различий не так уж и много, то и директивы в них в большинстве своем одинаковы. Полный список вы можете посмотреть в соответствующей документации, а ниже мы рассмотрим наиболее часто используемые — так называемые типовые.
К типовым командам .htaccess можно отнести:
- Директивы простого редиректа
Это одна из наиболее востребованных команд. Чтобы выполнить простое перенаправление вам следует записать в файл .htaccess такое выражение:
Redirect / http://www.namesite.com, где http://www.namesite.com — адрес нужного вам сайта.
Данный редирект позволяет отправить пользователя на другой URL при запросе адреса вашего веб-ресурса.
Давайте рассмотрим вариант посложнее:
Redirect / example http://www.example1.com
Redirect / example/download.html http://www.example1.com/download.html
Redirect 301 /kernel http://www.example1.com
Здесь:
example — адрес исходного раздела на сайте;
www.example1.com/ — URL, на который будет перенаправлен пользователь.
В этом случае при открытии example будет выполнен редирект на www.example1.com, а при обращении example/download.html посетитель будет отправлен на http://www.example1.com/download.html. В итоге будет выдан код 301, означающий «документ перемещен постоянно».
Как вариант, 301 редирект в .htaccess можно заменить на следующие коды — 302, 303 или 410.
Также вместо директивы Redirect можно использовать директиву RedirectMatch. Главное отличие состоит в том, что директива RedirectMatch возвращает регулярные выражения, что в некоторых случаях бывает полезно.
- Директивы сложного редиректа
Apache позволяет использовать сложный инструмент для изменения адреса веб-ресурса в зависимости от различных условий и факторов. Данный механизм поддерживает множество различных правил и связанных с ними условий, совокупность которых составляет мощный и гибкий механизм управления веб-адресами.
К директивам сложного редиректа можно отнести следующие варианты:
- RewriteCond — определяет перечень условий, при которых адрес преобразуется.
- RewriteRule — в .htaccess определяет список правил, задающих процесс преобразования.
При помощи директив сложного редиректа легче всего организовать 301 redirect www в .htaccess. Если на ваш сайт ссылаются как на www.namesite.com и просто на namesite.com, некоторые поисковики разделяют ссылочную массу на два разных доменных имени. 301 редирект дает возможность перевести ссылку с www на без www в .htaccess и наоборот. Предлагаем вам посмотреть примеры RewriteRule .htaccess:
- для доменного имени без www
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)$ http://%1/$1 [L,R=301]
- для доменного имени с www
RewriteCond %{HTTP_HOST} ^([^www].*)$
RewriteRule ^(.*)$ http://www.%1/$1 [L,R=301]
Таким же образом можно настроить в .htaccess редирект на новый домен при необходимости.
- Обработка сбоев сервера;
Под обработкой сбоев сервера следует подразумевать всем известные статусные ошибки или «Status Codes». При возникновении данных ошибок на экран пользователя выводится малопонятное сообщение технического характера, и во избежание подобных ситуаций используется директива ErrorDocument.
К примеру, если в .htaccess записать следующее:
ErrorDocument 403 «Sorry can’t allow you access today», то при возникновении 403 ошибки пользователю будет выдано записанное в «»…»» пояснение. Так можно сделать и относительно любых других ошибок, в том числе 404 error в .htaccess.
- Демонстрация индексной страницы
Когда человек заходит на ваш сайт, он видит индексную страницу. Если ее нет, то пользователю демонстрируется либо содержание каталога, либо ошибка 403 в том случае, если опция просмотра каталога отключена.
Команда Indexes отвечает за то, будет ли отображаться каталог соответствующего раздела, если индексный файл отсутствует.
Если при отсутствии запрашиваемого файла на вашем сайте не нужно показывать каталог, то вам следует указать в конфигурационном файле:
Options -Indexes
Если отображение каталога требуется, укажите в .htaccess:
Options Indexes
- Распознавание кодировки
Нередки случаи, когда браузер посетителя не способен распознать кодировку вашего веб-ресурса. Поэтому она должна быть указана как в заголовках документов, так и в настройках веб-сервера, при этом совпадение этих данных — обязательно.
Кодировки, которые встречаются в документах в кириллическом сегменте: Windows-1251, Windows-1250, KOI8-r (КОИ8-Р), UTF-8 (в .htaccess — двухбайтовая кодировка), cp866, Windows-1252.
В .htaccess кодировка задается следующей директивой:
AddDefaultCharset code, где code — требуемая кодировка из тех, что представлены выше.
Также, если в этом есть необходимость, можно задавать перекодировку при загрузке документов и файлов на сервер. К примеру, чтобы все файлы после загрузки были в кодировке Кириллица (DOS), вам следует прописать в .htaccess: CharsetSourceEnc cp866.
- Управление доступом
Также допустимо в .htaccess закрыть доступ к сайту или к отдельным его элементам для отдельных пользователей или целых категорий. Управление доступом в таких случаях регулируется директивой Order с описанным ниже синтаксисом:
Order [Deny,Allow] | [Allow,Deny]
Стоит иметь в виду:
- флаги установлены в порядке Deny,Allow — доступ будет запрещен для всех IP, кроме прописанных в команде;
- флаги установлены в порядке Allow,Deny, тогда доступ будет разрешен для всех IP, кроме прописанных в команде.
Пример применения:
Order Allow,Deny
Allow from all
Deny from aaa bbb
В описанном случае доступ открыт для всех посетителей, кроме IP-адесов aaa и bbb.
Также вы можете вписать в .htaccess запрет доступа к конкретному документу или определенному типу файлов. Для этого упомянутую выше команду нужно заключить в указанный ниже тег.
Для отдельного документа или файла:
Order Allow,Deny
Allow from all
Deny from xxx yyy
, где namefile.html — тот файл, к которому ограничивается доступ.
Для файлов с необходимым расширением:
Order Allow,Deny
Allow from all
Deny from xxx yyy
, где zzz — нужное расширение.
- Опции PHP
Одной из особенностей .htaccess является то, что директивы для конфигурации PHP допустимо размещать еще и в нем, что позволяет не вносить лишний раз изменения в php.ini.
Синтаксис данных директив прост:
php_flag название директивы on | off
php_value название директивы VALUE
В качестве примера можно привести включение htaccess PHP error reporting. Чтобы включить данное сообщение PHP об ошибках при помощи .htaccess, нужно записать в нем следующее:
php_flag display_errors on
php_flag display_startup_errors on
- Запароливание директорий
При желании можно также установить пароль для отдельной папки или целого каталога. Для этого в будущую запароленную папку следует добавить файл с такими командами:
AuthName «Protected area, please, enter the password»
AuthType Basic
AuthUserFile /home/t/test/.authfile
require valid-user
В описанном выше примере команда AuthName выводит указанный в кавычках запрос на введение пароля. Синтаксис данной директивы прост: AuthName «видимый для пользователя текст».
Директива AuthType позволяет выбрать тип аутентификации. Его можно выбрать из двух типов — Basic | Digest. Советуем выбирать первый, так как второй тип поддерживается не у всех.
AuthUserFile проверяет файл, где хранятся допустимые для авторизации пароли. Естественно, папка с этим файлом должна оставаться недоступной для рядовых пользователей.
- Включение Gzip-сжатия для сайта
Gzip-сжатие ускоряет загрузку сайта благодаря тому, что все запрашиваемые пользователем файлы страницы загружаются намного быстрее.
Чтобы включить Gzip сжатие, в .htaccess необходимо вписать код:
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/css text/javascript application/javascript application/x-javascript
Так включается сжатие для всех файлов, чьи расширения — html, text, javascript, xml, css.
Естественно, это далеко не самый полный перечень директив, которые допустимо использовать в .htaccess. С полным их списком можно ознакомиться на официальном сайте веб-сервера Apache. Кроме того, стоит упомянуть, что причиной возникновения ошибки 500 (Internal Server Error) — .htacces, а точнее — ошибка синтаксиса в какой-то из его директив. О том, где именно она была допущена, вы сможете узнать из лога сервера.
У вас остались вопросы по типовым командам? Например, как принудительно назначить безопасное соединение HTTPS в .htaccess или убрать index.php из адреса вашего сайта на хостинге от RigWEB или при случае, когда вы взяли выделенный сервер в аренду? Вы можете задать эти и многие другие вопросы нашим сотрудникам техподдержки! Вы получите оперативную квалифицированную помощь в рамках компетенции специалиста, после чего сможете возобновить работу над своим веб-проектом.
Пользуйтесь профессиональным хостингом и изменяйте настройки своих сайтов легко и быстро!