Пустая страница вместо пользовательской страницы ошибок tomcat - PullRequest
7 голосов
/ 04 октября 2010

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

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

tomcat \ conf \ web.xml:

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

apache \ conf \ extra \ 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.

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

Ответы [ 7 ]

2 голосов
/ 29 ноября 2012

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

JkMount /mycontext/* worker1

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

https://mycontext/someservlet/

или

https://mycontext/foo/nonexisting.html 
1 голос
/ 17 января 2011

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

0 голосов
/ 28 апреля 2014

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

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

    <error-page> 
    <error-code>404</error-code>
    <location>/error_404.html</location>
    </error-page>
0 голосов
/ 20 января 2011

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

<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>
0 голосов
/ 15 января 2011

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

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

РЕДАКТИРОВАТЬ

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

0 голосов
/ 07 января 2011

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

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

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

0 голосов
/ 02 декабря 2010

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

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

...