Главная > Программное обеспечение > Программы для Интернет > |
FAQ по Apache |
Что такое 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
Вернуться в раздел "Программы для Интернет" - Обсудить эту статью на Форуме |
Главная - Поиск по сайту - О проекте - Форум - Обратная связь |