2015-06-26 2 views
0

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

/books/
/books/science/
/books/science/fiction/
/books/science/fiction/kids/

Итак, я дал правила перезаписи в моем файле конфигурации как:

^/books$
^/books/(.*)$
^/books/(.*)/(.*)$
^/books/(.*)/(.*)/(.*)$

но в тот момент я даю URL-адрес что-то вроде этого

http://localhost/books/science/fiction/kids/12345

вместо того, чтобы захваченный четвертого правила переписывания, он захвачен второй, который не то, что я хочу.

Может кто-нибудь рассказать мне, как этого достичь? Заранее спасибо

^/books$ /webapp/wcs/stores/servlet/ABCController?resultsFor=allCategories [PT,QSA]
^/books/(.*)$ /webapp/wcs/stores/servlet/XYZController?make=$1&resultsFor=category [PT,QSA]
^/books/(.*)/(.*)$ /webapp/wcs/stores/servlet/ABCDController?format=$1-$2&resultsFor=subCategory [PT,QSA]
^/books/(.*)/(.*)/(.*)$ /webapp/wcs/stores/servlet/ASDFController?resultsFor=product [PT,QSA]

+0

@anubhava '' ^/книги $ \t/WebAPP/WCS/магазины/сервлет/ABCController? ResultsFor = allCategories [PT, QSA] '' '' – Matt

+0

^/книги /(.*)$ \t/WebAPP/WCS/stores/servlet/XYZController? make = $ 1 & resultsFor = category [PT, QSA] '' – Matt

+0

'' ^/books /(.*)/(.*)$ \t/webapp/wcs/stores/servlet/ABCDController? format = $ 1- $ 2 & resultsFor = subCategory [PT, QSA] '' – Matt

ответ

0

вместо того, чтобы захваченный четвертого правила переписывания, он захвачен второй

Это потому, что точка соответствует любой персонаж, поэтому и косые черты.

Заменяя класса символов, позволяющий ничего но косой черты (и требовательной, по крайней мере один символ из этого класса, так + вместо *) следует исправить: ([^/]+)

Другим способом было бы обратное порядок ваших правил ... Вы всегда должны пытаться писать их в порядке от большинства до наименее конкретных.

Смежные вопросы