Tuckey Urlrewriter променя url заявките за JS и CSS ресурси

Изпробвам URLRewriter на Tuckey.

Декларирах едно просто правило, както следва:

<rule>
    <from>/user/([0-9]+)$</from>
    <to>/user.do?id=$1</to>
</rule>

Бих очаквал заявки като myapp.com/user/29 да бъдат съпоставени с „myapp.com/user.do?id=29“. Това работи добре и заявката пристига на подкрепено. Когато преглеждате отговора на GUI обаче, ето как Firebug се оплаква:

въведете описание на изображението тук

Както можете да видите, между /roqket и /resources вече има /user. Нямам представа как това се озова там. Ако премахна <rule>, той се връща към нормалните, работещи заявки за ресурси.

Можеш ли да ми помогнеш? какво ми липсва Благодаря!


person Ionut    schedule 06.11.2012    source източник


Отговори (2)


Трябва да дефинирате други филтри за js, style и img.

Нещо като това:

<rule>
    <from>/img/**</from>
    <to>/img/$1</to>
</rule>
<rule>
    <from>/js/**</from>
    <to>/js/$1</to>
</rule>
<rule>
    <from>/style/**</from>
    <to>/style/$1</to>
</rule>

Тези филтри трябва да бъдат декларирани преди този, който дефинирате за потребителя. Тези правила ще съвпадат преди това, което се прилага за филтъра и вашият проблем трябва да бъде решен.

Редактиране.

Относно вашия коментар: Този потребител, който може да се види на екрана за печат, е добавен по някакъв начин от филтъра.

Мисля, че това не е правилно, искам да кажа, че филтърът не е този, който добавя „потребител“ към филтъра. Мисля, че проблемът е как внасяте вашите ресурси.

Вероятно правите нещо подобно:

<script type="text/javascript" language="javascript" src="resources/js/lang.js"></script>

В този пример вижте как относителният URI не съдържа контекста на вашето приложение и започва без наклонена черта. Когато използвате URL като този, браузърът ще търси ресурса в път, относителен към действителния път. Ако имате в браузъра си http://localhost:8080/roqlet/user, резултатът ще бъде http://localhost:8080/roqket/user/theResource (ако приемем, че „roqket“ е контекстът на вашето приложение).

Така че трябва да направите това:

<c:set var="ctx" value="${pageContext.request.contextPath}"/>

<script type="text/javascript" language="javascript" src="${ctx}/resources/js/lang.js"></script>

След като посочите контекста, URI ще бъде изграден спрямо него, а не спрямо действителния: http://localhost:8080/roqket/theResource

Разгледайте този документ.

person jddsantaella    schedule 06.11.2012
comment
Опитах вашето решение, но имах същия проблем. Не разбирам защо тези заявки биха били съпоставени с user по някакъв начин. Те не съдържаха думата user. Това user, което може да се види на екрана за печат, се добавя по някакъв начин от филтъра - person Ionut; 06.11.2012
comment
Разгледайте изданията ми. Предполагам какъв ти е проблема. Надявам се ;-) - person jddsantaella; 07.11.2012
comment
Е.. това беше разочароващ ден, загубен за нищо :)). Това беше проблемът. Благодаря ти! Никога не бих го познал.. - person Ionut; 07.11.2012
comment
Е, със сигурност следващия път, когато се сблъскате с този проблем, ще го поправите много бързо. Така че изобщо не сте пропилели деня ;-) - person jddsantaella; 07.11.2012

<rule>
<condition type="request-uri" operator="notequal">\.(images|gif|jpeg|png|css|js|pdf|doc|ico|jsp|jpg)$</condition>
<from>............

това е начинът да спрете заявката от филтъра за пренаписване на URL адреса на tuskey

person AnilHoney    schedule 29.11.2012