ErrorDocument не работает с локальным файлом - PullRequest
2 голосов
/ 21 ноября 2010

Я работаю над веб-приложением, которое запускаю на Tomcat 6.0.18, и использую Apache 2 в качестве обратного прокси-сервера. Это отлично работает. Я также пытаюсь заставить Apache отображать страницы ошибок, когда, например, я отключил Tomcat для повторного развертывания и т. Д. Однако директива ErrorDocument в моем httpd.conf, похоже, совсем не работает для локальных файлов. Я пробовал внешние URL и строки, и оба этих случая работают нормально. Но ниже не работает:

ErrorDocument 403 /Oops.html
ErrorDocument 404 /Oops.html
ErrorDocument 502 /Oops.html
ErrorDocument 503 /Oops.html

Файл Oops.html находится в моей папке htdocs. Вот некоторые данные журнала httpd, когда я пытаюсь получить доступ к приложению, когда Tomcat не запущен, а httpd:

==> access_log <==
localhost - - [21/Nov/2010:12:23:36 -0800] "GET /home HTTP/1.1" 503 -

==> error_log <==
[Sun Nov 21 12:23:36 2010] [debug] mod_proxy_http.c(54): proxy: HTTP: canonicalising URL //localhost:8080/home
[Sun Nov 21 12:23:36 2010] [debug] proxy_util.c(1412): [client ::1] proxy: http: found worker http://localhost:8080/ for http://localhost:8080/home
[Sun Nov 21 12:23:36 2010] [debug] mod_proxy.c(819): Running scheme http handler (attempt 0)
[Sun Nov 21 12:23:36 2010] [debug] mod_proxy_http.c(1693): proxy: HTTP: serving URL http://localhost:8080/home
[Sun Nov 21 12:23:36 2010] [debug] proxy_util.c(1790): proxy: HTTP: retrying the worker for (localhost)
[Sun Nov 21 12:23:36 2010] [error] proxy: HTTP: disabled connection for (localhost)
[Sun Nov 21 12:23:36 2010] [debug] mod_proxy_http.c(54): proxy: HTTP: canonicalising URL //localhost:8080/Oops.html
[Sun Nov 21 12:23:36 2010] [debug] proxy_util.c(1412): [client ::1] proxy: http: found worker http://localhost:8080/ for http://localhost:8080/Oops.html
[Sun Nov 21 12:23:36 2010] [debug] mod_proxy.c(819): Running scheme http handler (attempt 0)
[Sun Nov 21 12:23:36 2010] [debug] mod_proxy_http.c(1693): proxy: HTTP: serving URL http://localhost:8080/Oops.html
[Sun Nov 21 12:23:36 2010] [debug] proxy_util.c(1790): proxy: HTTP: retrying the worker for (localhost)
[Sun Nov 21 12:23:36 2010] [error] proxy: HTTP: disabled connection for (localhost)

Обратите внимание, что я не использую файл .htaccess. Похоже, что есть некоторые проблемы с настройками, относящимися к папке htdocs. Ниже приведены некоторые фрагменты из моего файла httpd.conf, связанные с программой htdocs. Я новичок в работе с Apache, поэтому не уверен, насколько это актуально или стоит ли публиковать больше.

<Directory "/usr/local/apache2/htdocs">
  Options Indexes FollowSymLinks
  AllowOverride None
  Order allow,deny
  Allow from all    
</Directory>

Любая помощь высоко ценится!

EDIT:

Когда запущен Tomcat, я вижу следующие строки в журнале ошибок:

[Sun Nov 21 13:30:11 2010] [error] [client ::1] Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.
[Sun Nov 21 13:30:11 2010] [debug] core.c(3046): [client ::1] r->uri = /Oops.html
[Sun Nov 21 13:30:11 2010] [debug] core.c(3052): [client ::1] redirected from r->uri = /Oops.html
[Sun Nov 21 13:30:11 2010] [debug] core.c(3052): [client ::1] redirected from r->uri = /Oops.html
[Sun Nov 21 13:30:11 2010] [debug] core.c(3052): [client ::1] redirected from r->uri = /Oops.html
[Sun Nov 21 13:30:11 2010] [debug] core.c(3052): [client ::1] redirected from r->uri = /Oops.html
[Sun Nov 21 13:30:11 2010] [debug] core.c(3052): [client ::1] redirected from r->uri = /Oops.html
[Sun Nov 21 13:30:11 2010] [debug] core.c(3052): [client ::1] redirected from r->uri = /Oops.html
[Sun Nov 21 13:30:11 2010] [debug] core.c(3052): [client ::1] redirected from r->uri = /Oops.html
[Sun Nov 21 13:30:11 2010] [debug] core.c(3052): [client ::1] redirected from r->uri = /Oops.html
[Sun Nov 21 13:30:11 2010] [debug] core.c(3052): [client ::1] redirected from r->uri = /Oops.html
[Sun Nov 21 13:30:11 2010] [debug] core.c(3052): [client ::1] redirected from r->uri = /

Что-то настроено неправильно, но я не знаю, что или где. Спасибо за ответы до сих пор, но все еще в тупик.

Ответы [ 2 ]

1 голос
/ 20 февраля 2013

AllowOverride не должно быть None

0 голосов
/ 21 ноября 2010

Если указано в центральной конфигурации, Apache, вероятно, будет трактовать путь как абсолютный, ища Oops.html в корневом каталоге. Попробуйте использовать полный путь:

ErrorDocument 403 /usr/local/apache2/htdocs/Oops.html

В качестве альтернативы, я думаю, если вы поместите его в раздел VirtualHost, он будет работать относительно.

ErrorDocument Docs

...