Поддержка / Часто задаваемые вопросы /
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>то для каталога /web/docs/spec будет включена только опция Includes.
Options Indexes FollowSymLinks
</Directory>
<Directory /web/docs/spec>
Options Includes
</Directory>
Для объединения опций используются символы "+/-". Если перед опцией стоит "+", то опция добавляется к списку включенных опций, если "-", - то удаляется из этого списка. Например, если заданы директивы:<Directory /web/docs>то для каталога /web/docs/spec будут включены опции Includes и FollowSymLinks.
Options Indexes FollowSymLinks
</Directory>
<Directory /web/docs/spec>
Options +Includes -Indexes
</Directory>
При объединении опций также учитываются опции, заданные в 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 следующие строки:
Options +FollowSymlinks
Обратите внимание: запись
вместо необходимости комментировать все последующие строки - все, что вы должны сделать, это установить "off".
Если использование
Для начала рассмотрим простой пример:
Предположим, что вы хотите защитить от несанкционированного доступа ваш файл .htaccess, тогда в .htaccess следует добавить строку следующего содержания:
Это правило расшифровывается так:
Если кто-то пробует обращаться к файлу .htaccess, система должна произвести код ошибки "Forbidden" (403).
Конструкция ^.htaccess$ в этом регулярном выражении означает:
^ - якорь начала строки
$ - якорь конца строки
[F] - специальный "запрещающий" флажок (forbidden)
Имя файла должно быть расположено точно между начальным и конечным якорем. Это будет гарантировать то, что только это определенное имя файла, а не какое-нибудь другое, сгенерирует код ошибки. В противном случае, строка будет обрабатываться как регулярное выражение (об этом далее по тексту).
Это правило глобально, то есть каждый получит указанное сообщение об ошибке. Мы можем ограничивать правило при помощи различных условий правила (RewriteCond). Правило будет выполнено только в том случае, если перед ним будет встречен ряд условий:
RewriteRule ^.*$ - [F]
Эти строки запрещают доступ поисковому роботу под кодовым названием "EmailSiphon" (имеется в виду, имя юзер-агента). Данный робот является сборщиком почтовых адресов с различных веб-страниц.
Строка:
состоит из трех частей:
Директива (указание): RewriteCond
Проверочная строка: %{HTTP_USER_AGENT}
Образец условия: ^EmailSiphon
Проверочная строка - переменная сервера.
Образец условия - регулярное выражение.
RewriteRule ^.*$ - [F] - определяет, что именно нужно делать, когда робот запросит доступ.
Регулярное выражение "^.*$" означает: "Доступ ко всем файлам запрещен".
Примеры:
Пример 1. Переадресация всех запросов на главную страницу example.org, при заходе на сайт с IP-адресов, отличных от 192.0.2.78, 192.0.2.77, 192.0.2.79:
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, в котором пропишите следующие директивы:
3. Создать group file, если необходимо (для того чтобы была возможность доступа нескольким пользователям).
Пример 3. Не работает авторизация в паролированной папке, сайт использует ModRewrite. Как исправить?
Прописать в .htaccess следующую строку:
Пример 4. Необходимо, чтобы поддомен sub.example.org был направлен не в папку ~/public_html/sub, а в ~/public_html/test/sub.
В ~/public_html/sub создается файл .htaccess со следующими директивами:
RewriteRule ^(.*)$ test/$1 [L]







