Назад | Перейти на главную страницу

Пользовательские страницы ошибок в Apache Tomcat

Я запускаю сервер Apache Tomcat с двумя настраиваемыми сервлетами. Древовидная структура выглядит так:

$CATALINA_HOME/webapps/
         ROOT/
           WEB-INF/
         servlet1/
           META-INF/
           WEB-INF/
         servlet2/
           META-INF/
           WEB-INF/

Я пытаюсь добавить настраиваемую страницу html с ошибкой для каждого сервлета, который будет отображаться при ошибке 400, 404 и при возникновении исключения на сервлете (например, информация, которая должна была быть отправлена ​​сервлету в HTTP-запросе, не там)

Я добавил к $CATALINA_HOME/webapps/servlet1/WEB-INF/web.xml

 <error-page>
   <error-code>400</error-code>
   <location>/error.html</location>
 </error-page>
 <error-page>
   <error-code>404</error-code>
   <location>/error.html</location>
 </error-page>
 <error-page>
   <exception-type>java.lang.Throwable</exception-type>
   <location>/error.html</location>
 </error-page>

и я создал error.html в $CATALINA_HOME/webapps/ROOT/. Кажется, это не работает. Когда я печатаю " www.server.com/servlet1/SomRandomStuff чтобы получить 404, отображается пустая страница, а не error.html. Что-то еще происходит, когда я вызываю сервлет, не передавая ему правильную информацию, браузер спросит меня, хочу ли я загрузить файл.
Я пробовал разместить error.html не на ROOT но в каталоге servlet1. Не сработало. Я проверил это error.html имеет правильные разрешения, все в порядке. У меня нет идей, и несколько руководств, которые я нашел в Интернете, очень расплывчаты.

Что я делаю не так? Как мне добиться этого - отображать настраиваемую страницу ошибок для каждого сервлета?

Спасибо вам за помощь.

Пути к страницам начинаются с косой черты:

 <error-page>
   <error-code>400</error-code>
   <location>**/error.html**</location>
 </error-page>
 <error-page>
   <error-code>404</error-code>
   <location>**/error.html**</location>
 </error-page>
 <error-page>
   <exception-type>java.lang.Throwable</exception-type>
   <location>**/error.html**</location>
 </error-page>

В этом случае он может искать их в корне диска.

Если они находятся в той же папке, что и web.xml, вы можете попробовать это так ./error.html

Помимо этого, я бы рекомендовал попробовать полный путь к файлу: /var/www/error/error.html или какова ваша ситуация.

захватить 404 для www.server.com/servlet1/SomRandomStuff переместите файл error.html в $CATALINA_HOME/webapps/servlet1/error.html. скопируйте файл с ошибкой в ​​каждое из своих веб-приложений. Несмотря на то, что это не лучший способ справиться с этим, у меня это сработало.

Ваш файл с ошибкой должен находиться в этом каталоге (не в корне):

$CATALINA_HOME/webapps/servlet1