2011-03-22 70 views
0

我想要一個正則表達式字符串來反映一個可選參數,在這種情況下,一個地理狀態。URL重寫 - 可選參數?

我可以用兩個規則做到這一點:

<rewrite url="~/(.+)-(.+)/(.+).aspx" to="~/Default.aspx?city=$1&amp;state=$2&amp;term=$3&amp;x=$4"/> 
<rewrite url="~/(.+)/(.+).aspx" to="~/Default.aspx?city=$1&amp;state=NONE&amp;term=$2&amp;x=$4"/> 

利用,查詢到/Los+Angeles/cars.aspx: 地理 - 城市:洛杉磯 地理 - 狀態:無

隨着,查詢到/Los+Angeles-CA/cars.aspx: 地理 - 城市:洛杉磯 地理 - 狀態:CA

我很好奇,如果有一種方法,在一個重寫語句來做到這一點。

謝謝。

回答

1

在一段時間內沒有在配置中重寫URL,但我很習慣正則表達式。這對你有用嗎?

<rewrite url="~/([^-]+)(?:-(.+))?/(.+).aspx" to="~/Default.aspx?city=$1&amp;state=$2&amp;term=$3&amp;x=$4"/> 

國家不會說不,但實際上應該是空白。

+0

這可能工作,我會給它一個旋轉。 「無」僅用於顯示目的。 – ElHaix 2011-03-25 15:43:32

+0

這工作正常,謝謝。現在,而不是可選的短劃線,我想有一個可選的斜槓,因此:/Los+Angeles/CA/cars.aspx。謝謝。 – ElHaix 2011-03-25 16:16:56

0

你是否願意將空字符串而不是NONE傳遞給狀態參數?如果是這樣,你的第一個規則可以改寫這樣的:

~/(.+)-?(.+)/(.+).aspx 

...和你的第二個可以刪除。

+0

這個正則表達式將第二個參數的最後一個字母剪掉,合併第一個和第二個,並輸出最後一個字母作爲第二個參數。 – ElHaix 2011-03-25 16:20:01