2013-04-23 72 views
0

我的問題是這樣的,我有我的urewrite.xml文件中的類似看規則的問題,事實上,第一條規則將起作用,但類似的規則將不會。這裏有一個例子:Tomcat Tuckey UrlRewrite來規則問題

<rule> 
<from>Porsche-911_991-3.4_Carrera.jsp</from> 
<to>cars.jsp?makeID=640&amp;modelID=3747</to> 
</rule> 

<rule> 
<from>Test-Porsche-911_991-3.4_Carrera.jsp</from> 
<to>test.jsp?makeID=640&amp;modelID=3747</to> 
</rule> 

的第一條規則的作品,二不,對於其原因脫離了我。如果我手動訪問test.jsp?makeID = 640 & modelID = 3747該頁面有效,如果我嘗試Test-Porsche-911_991-3.4_Carrera.jsp頁面沒有出現,只是生成錯誤日誌,指定參數丟失。

我希望有人能幫助我,然後把我所有的頭髮都拉出來。

回答

0

第一條規則Porsche-911_991-3.4_Carrera.jsp的匹配文本是第二條規則匹配文本的子字符串。結果,第二個URL不見了。

使用caret metacharacter兩個URL之間區別:

<rule> 
    <from>^/Porsche-911_991-3.4_Carrera.jsp</from> 
    <to>cars.jsp?makeID=640&amp;modelID=3747</to> 
</rule> 

<rule> 
    <from>^/Test-Porsche-911_991-3.4_Carrera.jsp</from> 
    <to>test.jsp?makeID=640&amp;modelID=3747</to> 
</rule> 

逆轉爲了把更具體的網址第一個將工作以及:

<rule> 
    <from>Test-Porsche-911_991-3.4_Carrera.jsp</from> 
    <to>test.jsp?makeID=640&amp;modelID=3747</to> 
</rule> 

<rule> 
    <from>Porsche-911_991-3.4_Carrera.jsp</from> 
    <to>cars.jsp?makeID=640&amp;modelID=3747</to> 
</rule> 
+0

我注意到,如果你真的交換單詞在.jsp之前結束,那麼您可以擁有兩個規則,因此Porsche-911_991-3.4_Carrera-Test.jsp可以工作,但認爲這並不理想,但單詞Test僅用於測試目的。我會考慮使用脫字符元字符,謝謝。 – iggyweb 2013-08-20 07:55:29

+0

由於英文從左至右讀取,Carrera-Test.jsp不是Carrera.jsp的子字符串,但保時捷是Test-Porsche的子字符串。 [後綴樹](http://www.allisons.org/ll/AlgDS/Tree/Suffix/)可以幫助可視化關係。 – 2013-08-20 15:48:04