Пустая страница вместо пользовательской страницы ошибки tomcat

125
14

Моя настройка: Apache 2.2 + Tomcat 6.0 @Windows 2008 R2 64bit


    статические веб-страницы:/
    сервлет:/foo
    tomcat и apache связаны mod_jk
    404.jsp помещается в tomcat\webapps\ROOT

кот\конф\web.xml:


<error-page>
<error-code>404</error-code>
<location>/404.jsp</location>
</error-page>

апач\конф\экстра\HTTPD-ssl.conf:


JkMount /foo/* worker1
JkMount /404.jsp worker1

Когда я открываю https://...../404.jsp, отображается моя пользовательская страница ошибок.
Но когда я открываю https://...../foo/nonexisting.html, отображается пустая страница.


Если я удалю код <error-page>...</error-page> из web.xml и откройте https://...../foo/nonexisting.html, тогда отобразится tomcats own 404.


Любые подсказки?

спросил(а) 2021-01-01T18:05:26+03:00 5 месяцев, 3 недели назад
1
Решение
77

Jkmount должен иметь контекст как параметр, например:


JkMount /mycontext/* worker1

тогда к страницам обращаются следующим образом:

https://mycontext/someservlet/

или


https://mycontext/foo/nonexisting.html 

ответил(а) 2021-01-01T18:05:26+03:00 5 месяцев, 3 недели назад
64

Насколько я вижу, ошибки webapps не могут обрабатываться с страницами ошибок, размещенными в ROOT. Теперь я помещаю 404.jsp в каждый webapp (/foo/404.jsp,/bar/404.jsp,...), и теперь он работает. Я могу безопасно удалить 404.jsp в ROOT, но если я удалю 404.jsp в /foo или/bar, пустая страница будет использоваться, если 404 встречается либо в webapp. Любой tomcat игнорирует ведущий/элемент "местоположение", или содержимое этого элемента добавляется на пути "вызова" webapp.

ответил(а) 2021-01-01T18:05:26+03:00 5 месяцев, 3 недели назад
45

Если он работает нормально при загрузке 404.jsp и показывает пустую страницу, когда tomcat на самом деле пытается использовать страницу для обработки ошибки 404, это может означать, что в исходном коде 404.jsp есть ошибка, вызванная только используя объект errorData.


Проверьте журналы. У меня была аналогичная проблема с пустой страницей, и оказалось, что у меня был неправильный URL-адрес taglib.


ИЗМЕНИТЬ


Кроме того, JkMount не требуется, поскольку tomcat уже генерирует эти 404 (т.е. они не находятся в предложении Apache).

ответил(а) 2021-01-01T18:05:26+03:00 5 месяцев, 3 недели назад
45

У меня тоже была эта проблема, и оказалось, что виновником было то, что я ввел имя корня контекста приложения в местоположение страницы ошибки. То есть


<error-page>
<error-code>404</error-code>
<location>/MyApp/404.jsp</location>
</error-page>

В то время как это, конечно, было


<error-page>
<error-code>404</error-code>
<location>/404.jsp</location>
</error-page>

ответил(а) 2021-01-01T18:05:26+03:00 5 месяцев, 3 недели назад
44

Примечание. Вы должны быть уверены, что указанная вами страница не начинается с номера (например: 404.jsp). Это потому, что, согласно синтаксису Java, вы не можете запустить имя класса с номером.


http://www.jguru.com/faq/view.jsp?EID=492774


Надеюсь, что поможет: -)

ответил(а) 2021-01-01T18:05:26+03:00 5 месяцев, 3 недели назад
45

Я столкнулся с этой проблемой при запуске статического веб-проекта. Я выполнил следующую реализацию, и это сработало для меня.


Добавлены следующие строки в% CATALINA_HOME%/conf/web.xml


    <error-page> 
<error-code>404</error-code>
<location>/error_404.html</location>
</error-page>

ответил(а) 2021-01-01T18:05:26+03:00 5 месяцев, 3 недели назад
-5

В нем отображаются ровно 404 страницы, а не?
Потому что некоторые другие коды ошибок также пользуются, как 400 401 403 500.
Посмотрите на эту ссылку для этого
http://docs.yahoo.com/docs/writeus/error.html


Если у вас есть другие, добавьте эти коды ошибок в файл web.xml.
Надеюсь, это поможет.
Счастливое кодирование...

ответил(а) 2021-01-01T18:05:26+03:00 5 месяцев, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема