Я настраиваю правила URL, используя Tuckey UrlRewrite. Все, чтобы работать до сих пор, однако я борюсь со своей страницей по умолчанию.JSF UrlRewriteFilter catchall/404 replacement
Цель: - Любой запрос не соответствует существующему файлу; или - Любой запрос, не соответствующий предыдущим правилам ... должен начать поиск через search.jsf?q=
. Он предназначен для обработки любой возможной мертвой ссылки с старого сайта и для замены страницы 404 с чем-то более функциональным (чтобы помочь пользователю найти то, что он на самом деле ищет).
Частичный код (остальные правила похожи на 2-й один, только правило «по умолчанию» делает аварии):
<rule>
<name>Home</name>
<from>^/$</from>
<to type="forward" last="true">/home.jsf</to>
</rule>
<rule>
<name>Contact Us</name>
<from>^/contact_us/?$</from>
<to type="forward" last="true">/contactUs.jsf</to>
</rule>
<rule>
<name>Default + 404</name>
<from>^/[^\s]+$</from>
<to type="forward">^/search.jsf?q=$1</to>
</rule>
Это вызывает переполнение стека, поскольку это соответствует search.jsf
к [^\s]+
даже если есть физический файл, соответствующий search.jsf
.
Любое другое правило имеет last="true"
, так как ни одно из них не должно перекрываться (за исключением этого, очевидно,).
Я читал UrlRewriteFilter manual и не мог найти ничего кроме last="true"
, который теоретически должен остановить процесс от проверки других совпадений, если он уже нашел его.
спасибо!
EDIT: С отсутствием ответов и моей неспособностью решить эту проблему, я проверил альтернативный путь. Обратитесь к this question here.