From: http://www.softm.vov.ru
Subject: мини FAQ по Apache
FAQ по Apache (для WINDOWS и UNIX)
* Что такое Apache ?
Это веб сервер. Самый распространненый в среде UNIX.
--------------------------
* Где взять Aрасне ?
На официальном сайте сервера http://www.apache.org
--------------------------
* Как запретить / разрешить вывод содержимого директории в которой
отсутствует индексный файл ?
Для начала задайте приоритет конфигурационного файла размещенного
в конкретной директории перед конфигурацией на сервере в самом
корне дерева сервера (или виртуального сервера) директивой :
<Directory />
..... skip.....
AllowOverride All
</Directory>
После чего поместите в директорию (котарая находиться на сервере
или виртуальном сервере в корню которого вы разрешили вывод
директории), в которой вы хотите запретить вывод содержимого файл
.htcacess со следующей строкой
Options Indexes .... другие опции
А если вы хотите разрешить вывод содержимого директории то
поместите файл .htccess со следующим содержимым :
Options .... другие опции
--------------------------
* Как разрешить/запретить выполнение скриптов не только в директории
cgi-bin а и в остальных ?
Легче всего разрешить выполнение скриптов на всем сервере
(виртуальном сервере) . Для этого в корне сервера добавьте в
директиве Options параметр ExecCGI , Например для виртуального
сервера на это будет выглядеть так::
<VirtualHost server:8080>
DocumentRoot f:/intranet/vov/www <- Тут находиться корневой
каталог виртуального сервера
...skip..
</VirtualHost>
<Directory "f:/intranet/vov/www">
Options FollowSymLinks MultiViews Indexes ExecCGI <-- Среди
других возможностей разрешаем запуск скриптов
...skip..
</Directory>
--------------------------
* Я хочу подшить к моему серверу директорию лежащую не внутри
корневого каталога а в другом месте на диске. Как легче всего это
сделать ?
Проще всего воспользоваться сервисами операционной системы , так
например под Unix можно использовать символическую ссылку на
директорию (под Unix требуются права root). Если вы хотите сделать
это только пользуясь возможностями Apache то создайте алиас :
<IfModule mod_alias.c>
...
Alias /test/ "C:/musor/test_www/"
<Directory "C:/musor/test_www/">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
...
Теперь при обращении к серверу http://localhost/test/ будет
вызвана не вложенная директория test в корневой каталог сервера а
алиас размещенный в месте указанном в комманде создания алиаса
Alias /test/ "C:/musor/test_www/"
--------------------------
* У меня хостинг на Apache. Как мне не изменяя основной
конфигурационный файл Apache запретить пользователям просмотр
файлов *.txt , *.log через браузер в определенной директории (а
также во всех вложенных в нее директориях) ? (Файлы создаються php
контентом сайта и содержат логи подключению и т.п.)
Создайте в этой директории файл *.htaccess со следующим
содержимым:
<FilesMatch ".(txt|log)$">
Order deny,allow
deny from all
</FilesMatch>
--------------------------
* Как перейти на главную страницу сайта если пользователь ввел
неверный адрес?
В корневой директории сайта расположите файл .htaccess в котором
напишите :
ErrorDocument 403 /
ErrorDocument 404 /
Вот краткий перечень возможных кодов :
400 - Bad Request (Ошибочный запрос )
401 - Authorization Required (Ошибка авторизации)
403 - Forbidden (Доступ запрещен)
404 - Not Found (Документ не найден)
500 - Internal Server Error (Внутрення ошибка сервера)
Если у вас установлен PHP то можно в файле вписать :
ErrorDocument 400 /errors/e.php
ErrorDocument 401 /errors/e.php
ErrorDocument 403 /errors/e.php
ErrorDocument 404 /errors/e.php
ErrorDocument 500 /errors/e.php
А в директории /errors разместить скрипт e.php в котором вывести
сообщение про ошибку :
<?echo "Ошибка $REDIRECT_STATUS при доступе к $REQUEST_URI ";?>
--------------------------
* А как вывести сообщение что адрес неверный ?
В корневой директории расположите файл error.html с вашим
сообщением кроме того в корню сайта создайте фавйл .htaccess в
котором укажите:
ErrorDocument 403 /error.html
Кроме того возможно указать строку-сообщение про ошибку в самом
.htaccess файле :
ErrorDocument 403 "Доступ запрещен!
--------------------------
* Как исключить из лога Апача отдельные типы файлов?
SetEnvIf Request_URI /.gif$ nolog
SetEnvIf Request_URI /.jpg$ nolog
CustomLog /path/to/access.log combined env=!nolog
Если при этом выдается следующее сообщение: Syntax error on line
тут номер линии of /тут путь к конфигурации/httpd.conf: CustomLog
takes two arguments, a file name and a custom log format string or
format name то Вам следует обновить версию Апача.
--------------------------
* Портятся arj (и некоторые другие типы) файлы при file
uploads/downloads в Apache. Все байты с кодом 00h заменяются на
20h. Что делать?
У вас "Russian" Apache. Запретите все перекодировки !
<Location /path/to/>
CharsetDisable On
</Location>
--------------------------
* При работе сервера иногда отказываются работать скрипты и в логах
пишется ... reason: couldn't spawn child process. Что делать?
Нужно увеличить ограничение на общее максимальное количество
процессов в системе, или максимальное количество процессов,
запускаемых одним пользователем, или то и другое одновременно. Как
это делается зависит от конкретной Unix. Читайте документацию.
--------------------------
* У меня под Apache перестали кэшироваться документы, а скрипты
после Back говорят: data missing
посмотрите на apache.lexa.ru описание директивы
CharsetDisableForcedExpires.
--------------------------
Copyright "Программы для бизнеса", http://www.softm.vov.ru