Главная

 / 

...

 / 

Поддержка

 / 

Часто задаваемые вопросы

 / 

WEB-сервер Apache

Apache - HTTP-сервер, один из (можно сказать, самый) самых популярных на данный момент. Надежность проверена опытом эксплуатации; очевидные преимущества - набор возможностей, таких как использование СУБД, поддержка самых распространенных языков веб-программирования Perl, PHP и др., гибкая настройка под определенные нужды и задачи и т.д.
Всё об Apache - на официальном сайте продукта http://httpd.apache.org/ "The Apache Software Foundation" (англ.); также есть множество русскоязычных источников, советуем http://apache.tversu.ru/ - документация, основанная на материалах вышеупомянутого официального источника, переведенная на русский язык.
Мы же подробно остановимся лишь на основных моментах, связанных с использованием данного веб-сервера именно на нашем хостинге.

Файл httpd.conf

Основным конфигурационным файлом Apache является файл httpd.conf. В нем содержатся настройки WEB-сервера, виртуальных серверов всех его программных модулей.
Обратите внимание:
на виртуальном хостинге настройки данного файла для всех клиентов едины, и мы не изменяем/добавляем записи по вашему требованию! Однако практически все, что вам необходимо, вы можете настроить локально с помощью файла .htaccess и средств модуля mod_rewrite.
Клиентам VPS-хостинга доступно для изменения абсолютно все в рамках их виртуального сервера.


Файл .htaccess

.htaccess - файл дополнительной конфигурации WEB-сервера. Данный файл также состоит из директив, но отличается от конф. файла httpd.conf тем, что прописанные в нем правила распространяются только на каталог, в котором он расположен. Например, директивы "главного" .htaccess-файла, расположенного на сервере виртуального хостинга в директории ~/public_html, распространяются на все поддиректории до тех пор, пока вы не создадите другой .htaccess-файл в директории, например, ~/public_html/addon - из которой работает дополнительный домен, который должен подчиняться другим правилам.
Этот файл не доступен пользователю из браузера, поскольку является скрытым файлом сервера. Он служит для переопределения директив из файла httpd.conf.
Файл .htaccess читается заново при каждом обращении к сайту.


Часто задаваемые вопросы по настройке файла .htaccess

Что такое индексный файл?


Индексный файл (index.html, index.htm, index.php, index.php3, index.phtml, index.shtml, default.htm или default.html) - файл, который открывается по умолчанию при обращении к каталогу, а не к конкретному файлу. Например, при обращении к основному домену example.org, если в директории ~/public_html расположен файл с одним из перечисленных выше названий, именно он и откроется.


Как сделать индексным файлом по умолчанию index.php (любой другой файл)?


Необходимо добавить в .htaccess строчку (директиву):

DirectoryIndex index.php 

Можно ли на тарифе Места Хватит использовать .htaccess?


Так как на тарифном плане Места Хватит Apache используется только для отдачи статического содержимого html, использование .htaccess сильно ограничено.


При попытке открытия сайта в некоторых браузерах выдается ошибка "сервер не найден" в некоторых "обнаружен бесконечный редирект".


К бесконечному редиректу (редиректу на самого себя) чаще всего приводит неверное использование файла .htaccess. Например, если данная ошибка возникает при обращении к вашему сайту example.org, а в .htaccess прописана строчка:

Redirect temp / http://www.example.org
это и приведет к ошибке.


Как сделать так, чтобы к сайту было разрешено обращение только с определенных IP?


Воспользуйтесь директивой Order:

Order deny,allow
deny from all  
allow from <ваш ip>  

Как сделать так, чтобы при отсутствии индексного файла выводился листинг всего каталога?


В .htaccess необходимо прописать директиву:

Options +Indexes

И наоборот, если пропишете

Options -Indexes
- будет стоять запрет на вывод содержимого каталога.

Обращаем ваше внимание на следующее:
Опции, указанные без знака (+/-), не объединяются с опциями, заданными ранее, а полностью их переопределяют. Например, если заданы директивы:

<Directory /web/docs>
Options Indexes FollowSymLinks
</Directory>
<Directory /web/docs/spec>
Options Includes
</Directory>
то для каталога /web/docs/spec будет включена только опция Includes.
Для объединения опций используются символы "+/-". Если перед опцией стоит "+", то опция добавляется к списку включенных опций, если "-", - то удаляется из этого списка. Например, если заданы директивы:
<Directory /web/docs>
Options Indexes FollowSymLinks
</Directory>
<Directory /web/docs/spec>
Options +Includes -Indexes
</Directory>
то для каталога /web/docs/spec будут включены опции Includes и FollowSymLinks.
При объединении опций также учитываются опции, заданные в httpd.conf, или в файлах .htaccess в каталогах уровнем выше.


Сервер отдает страницы в cp1251, но сайт написан в UTF8, что сделать для нормального отображения кодировки?


Пропишите в .htaccess следующие строки:

CharsetDisable on  
CharsetDefault utf-8  
CharsetSourceEnc utf-8  
AddDefaultCharset utf-8 

Аналогично для других кодировок с указанием нужной.


Как "заставить" сервер обрабатывать PHP код в html?


Прописать в .htaccess следующую строку:

AddType application/x-httpd-php .php .htm .html .phtml

Как создать собственные страницы ошибок?


Если вы хотите заменить наши стандартные страницы ошибок на свои, вам необходимо их создать, например, notfound.html, и прописать директиву в файле .htaccess:

ErrorDocument  404 /path_to_file/notfound.html

Это означает, что при обращении к не существующему на сервере документу, пользователю, запросившему этот документ, будет показываться не стандартная страница ошибки, а ваша собственная notfount.html.


Как включить кэширование?


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

ExpiresActive on|off
вы управляете включением/выключением кэширования соответственно. Подробное описание директив mod_expires вы можете найти на официальном сайте - http://httpd.apache.org/docs/1.3/mod/mod_expires.html.


Какие модули Apache установлены на серверах виртуального хостинга? Можно ли установить дополнительные модули по заявке?


На серверах виртуального хостинга установлены следующие модули Apache и доступны директивы (для тарифов Normal и Profy):

mod_access

  • Allow
  • Deny
  • Order

mod_actions

  • Action
  • Script

mod_alias

  • Alias
  • AliasMatch
  • Redirect
  • RedirectMatch
  • RedirectTemp
  • RedirectPermanent
  • ScriptAlias
  • ScriptAliasMatch

mod_asis
mod_auth

  • AuthGroupFile
  • AuthUserFile
  • AuthAuthoritative

mod_auth_passthrough
mod_autoindex

  • AddAlt
  • AddAltByEncoding
  • AddAltByType
  • AddDescription
  • AddIcon
  • AddIconByEncoding
  • AddIconByType
  • DefaultIcon
  • FancyIndexing
  • HeaderName
  • IndexIgnore
  • IndexOptions
  • IndexOrderDefault
  • ReadmeName

mod_cgi

  • ScriptLog
  • ScriptLogBuffer
  • ScriptLogLength

mod_charset

  • CharsetDefault
  • CharsetOptions
  • CharsetSourceEnc

mod_dir

  • DirectoryIndex
  • DirectorySlash

mod_env

  • PassEnv
  • SetEnv
  • UnsetEnv

mod_expires

  • ExpiresActive
  • ExpiresByType
  • ExpiresDefault

mod_frontpage
mod_imap

  • ImapMenu
  • ImapDefault
  • ImapBase

mod_include

  • XBitHack

mod_log_config

  • CookieLog
  • CustomLog
  • LogFormat
  • TransferLog

mod_mime

  • AddCharset
  • AddEncoding
  • AddHandler
  • AddLanguage
  • AddType
  • DefaultLanguage
  • ForceType
  • RemoveEncoding
  • RemoveHandler
  • RemoveType
  • SetHandler
  • TypesConfig

mod_negotiation

  • AddCharset
  • ForceLanguagePriority
  • LanguagePriority

mod_realip
mod_rewrite

  • RewriteEngine
  • RewriteOptions
  • RewriteLog
  • RewriteLogLevel
  • RewriteLock
  • RewriteMap
  • RewriteBase
  • RewriteCond
  • RewriteRule

mod_setenvif

  • BrowserMatch
  • BrowserMatchNoCase
  • SetEnvIf
  • SetEnvIfNoCase

mod_so
mod_ssl


Использование SSL подключается на тарифе Profy, настройки наши

mod_status

  • ExtendedStatus

mod_userdir

  • UserDir

mod_usertrack

  • CookieDomain
  • CookieExpires
  • CookieFormat
  • CookieName
  • CookiePrefix
  • CookieStyle
  • CookieTracking

mod_x_accel_redirect

Модуль mod_rewrite

mod_rewrite является замечательным модулем web-сервера Apache (обратите внимание на то, что он не будет выполняться под другими веб серверами!), который предоставляет "основанный на правилах механизм динамического изменения запрашиваемых URL-ов". Подробнее здесь - http://apachedev.ru/category/modules-apache/ или http://sitemaker.ru/technologies/webserver/mod_rewrite/.
Клиенты платного хостинга могут работать с mod_rewrite только через .htaccess, поэтому в данной инструкции будет рассмотрен только этот вариант.


Работа с mod_rewrite через .htaccess.


Чтобы запустить модуль, нужно вписать в .htaccess следующие строки:

RewriteEngine on
Options +FollowSymlinks

Обратите внимание: запись

RewriteEngine off
отменит все последующие команды. Это очень полезная особенность:
вместо необходимости комментировать все последующие строки - все, что вы должны сделать, это установить "off".

Если использование

Options +FollowSymlinks
запрещено, вы не сможете ограничить использование mod_rewrite для отдельных каталогов, вместо этого изменения будут действовать на весь сервер.
Для начала рассмотрим простой пример:
Предположим, что вы хотите защитить от несанкционированного доступа ваш файл .htaccess, тогда в .htaccess следует добавить строку следующего содержания:

RewriteRule ^.htaccess$ - [F]

Это правило расшифровывается так:
Если кто-то пробует обращаться к файлу .htaccess, система должна произвести код ошибки "Forbidden" (403).
Конструкция ^.htaccess$ в этом регулярном выражении означает:
^ - якорь начала строки
$ - якорь конца строки
[F] - специальный "запрещающий" флажок (forbidden)

Имя файла должно быть расположено точно между начальным и конечным якорем. Это будет гарантировать то, что только это определенное имя файла, а не какое-нибудь другое, сгенерирует код ошибки. В противном случае, строка будет обрабатываться как регулярное выражение (об этом далее по тексту).
Это правило глобально, то есть каждый получит указанное сообщение об ошибке. Мы можем ограничивать правило при помощи различных условий правила (RewriteCond). Правило будет выполнено только в том случае, если перед ним будет встречен ряд условий:

RewriteCond %{HTTP_USER_AGENT} ^EmailSiphon
RewriteRule ^.*$ - [F]

Эти строки запрещают доступ поисковому роботу под кодовым названием "EmailSiphon" (имеется в виду, имя юзер-агента). Данный робот является сборщиком почтовых адресов с различных веб-страниц.
Строка:

RewriteCond %{HTTP_USER_AGENT} ^EmailSiphon

состоит из трех частей:
Директива (указание): RewriteCond
Проверочная строка: %{HTTP_USER_AGENT}
Образец условия: ^EmailSiphon

Проверочная строка - переменная сервера.
Образец условия - регулярное выражение.
RewriteRule ^.*$ - [F] - определяет, что именно нужно делать, когда робот запросит доступ.
Регулярное выражение "^.*$" означает: "Доступ ко всем файлам запрещен".


Примеры:

Пример 1. Переадресация всех запросов на главную страницу example.org, при заходе на сайт с IP-адресов, отличных от 192.0.2.78, 192.0.2.77, 192.0.2.79:

 RewriteEngine   On
RewriteCond     %{REMOTE_ADDR} !^192.0.2.78$
RewriteCond     %{REMOTE_ADDR} !^192.0.2.77$
RewriteCond     %{REMOTE_ADDR} !^192.0.2.79$
RewriteRule     ^.*$ http://www.example.org/

Пример 2. Как закрыть доступ к директории паролем?

Вам будет необходимо проделать следующее:

1. Создать файл .htpasswd через shell, выполнив команду:

    /usr/local/apache/bin/htpasswd -c /home/login/.filename username

    где /usr/local/apache/bin/htpasswd - вызов утилиты htpasswd, /home/login/.filename абсолютный путь до файла с паролями, username - имя пользователя.


2. Прописать необходимые директивы-настройки:

В директории, которую вы хотите защитить паролем, создайте файл .htaccess, в котором пропишите следующие директивы:


    AuthType Basic
    - указывается тип авторизации. Это самый простой способ защитить директорию, более подробно о всех средствах авторизации Apache вы можете узнать здесь - http://httpd.apache.org/docs/1.3/howto/auth.html.



    AuthName
    "By Invitation Only" - любое название (будет показано на всплывающем окне авторизации).


    AuthUserFile
    /home/login/.filename - полный путь до файла .htpasswd (обратите внимание на то, что назвать файл вы можете и по-другому, но желательно, чтобы название начиналось с точки, чтобы *NIX системы воспринимали его как скрытый).


    Require user username
    - user (пользователь, который будет иметь право зайти в директорию с данным паролем).


3. Создать group file, если необходимо (для того чтобы была возможность доступа нескольким пользователям).

Пример 3. Не работает авторизация в паролированной папке, сайт использует ModRewrite. Как исправить?

Прописать в .htaccess следующую строку:

RewriteRule ^40[12]\.shtml$ - [L]

Пример 4. Необходимо, чтобы поддомен sub.example.org был направлен не в папку ~/public_html/sub, а в ~/public_html/test/sub.


В ~/public_html/sub создается файл .htaccess со следующими директивами:

RewriteCond %{HTTP_HOST} sub.example.org
RewriteRule ^(.*)$ test/$1 [L]

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

Тогда напишите нам!

*Ваш e-mail:

 Номер вашего Лицевого счета:

 Категория вопроса:

*Вопрос:

*Введите отображаемый код: