Tomcat Rewrite Valve - Как сохранить красивый URL в клиентском браузере - PullRequest
1 голос
/ 08 января 2020

Я использую Tomcat Rewrite Valve API , чтобы я мог опубликовать sh URL-адреса моего веб-приложения в виде pretty URL . Моя проблема заключается в том, что после успешной перезаписи URL-адреса в URL-адресе браузера не сохранялся красивый URL-адрес, а отображался окончательный уродливый URL-адрес, который я пытался спрятать, поэтому я не смог использовать этот красивый API-интерфейс. Я понимаю, что с Apache mod_rewrite module браузер будет сохранять красивый URL, который вводит пользователь после успешной перезаписи; отсюда прячутся мельчайшие URI и параметры от невооруженных глаз. Возможно ли достичь этого с помощью Rewrite Valve API? Как?

Конфиги

  1. Сервер = Tomcat Apache 9.0.30

  2. [webapp] / META-INF / context. xml

<Context override="true" > <Valve className="org.apache.catalina.valves.rewrite.RewriteValve" /> </Context>

[webapp] /WEB-INF/rewrite.config

RewriteRule ^/support/contactUs/?$ ?page=page_supportID&fragment=fragment_contactUsID [NC,L]

Вариант использования : пользователь вводит в свой браузер красивый URL: http://example.com/support/contactUs

Ожидается : правило перезаписи применяется и открывает фактический (безобразный) URL = http://example.com?page=page_supportID&fragment=fragment_contactUsID, а пользовательский браузер по-прежнему отображает симпатичный URL = http://example.com/support/contactUs.

Actual : Правило перезаписи применено и открыт фактический (безобразный) URL = http://example.com?page=page_supportID&fragment=fragment_contactUsID. ОДНАКО адрес URL браузера также отображал этот уродливый URL для пользователя, вместо того, чтобы сохранять красивый.

1 Ответ

0 голосов
/ 09 января 2020

НЕ возможно !

Я буду sh Однако я ошибся! Изучив больше этого поведения, для схемы URL Rewrite мы не сможем контролировать, как браузер клиента будет обрабатывать и отображать URL-адрес после перенаправления на своей панели URL с помощью этого API.

Tomcat RewriteValve API сделал то, что он должен делать = ПО УМОЛЧАНИЮ возвращая правильный HTTP status code 302 обратно клиенту при перенаправлении URL-адреса. За Tomcat do c:

Если код не указан, будет возвращен HTTP-ответ 302 (НАЙДЕН, ранее ПРОХВАТИЛ ВРЕМЕННО).

Мы можем подтвердить, прочитав сетевой HTTP-запрос / ответ стека трассировки. Для целей этого вопроса HTTP-ответ 302 - это то, что мы ожидали увидеть. За MDN сделать c:

HTTP 302 Найдено ... Браузер перенаправляет на эту страницу, но поисковые системы не обновляют свои ссылки на ресурс ... Даже если spe c требует, чтобы метод (и тело) не изменялись при выполнении перенаправления, не все пользовательские агенты соответствуют этому - вы все равно можете найти этот тип программного обеспечения с ошибками.

О боже!

...