2010-10-27 39 views
1

我使用IIS7 URL重寫與我的網站寫在ASP.NET中。我不確定在重寫的URL中處理/的最佳方式,因爲目前當出現一個時,它會打破參數,因爲引擎認爲它需要將它拆分到錯誤的地方。例如,像這樣的網址:處理/在IIS中URL重寫

www.test.com/myscript.aspx?code=dothis&title=tester/title 

將被錯誤地分割。 「測試人員」將成爲代碼和「標題」的標題。有什麼辦法可以防止這種情況發生,或者是因爲引擎在其上分割了URL,因此您無法使用/

謝謝。

回答

2

URLEncode函數可用於重新編碼反向引用。例如:

^/myscript/([^/]+)/([^/]+)$         -> rewrite -> 
/myscript.aspx?code={UrlEncode:{R:1}}&title={UrlEncode:{R:2}} 

^/myscript.aspx?code=([^&]+)&title=([^&]+)$     -> redirect -> 
/myscript/{UrlEncode:{R:1}}/{UrlEncode:{R:2}} 

當你處理不同的網址成分,如單路部分或參數值(這是絕大多數的時間),你會想URLEncode;海事組織這是一個非常有問題的設計,這不會發生(a)默認或(b)在添加規則嚮導生成的規則中。

+0

我把它放在web.config文件中,所有的重寫都完成了嗎? – webnoob 2010-10-27 12:11:24

+0

是的,或者您可以通過IIS管理器界面來完成。如果你使用配置XML,你當然需要將'&'s轉義爲'&'。 – bobince 2010-10-27 14:41:16

+0

非常感謝您的幫助。 – webnoob 2010-10-28 14:01:50

0

我已經通過在URL中使用它們之前替換所有正斜槓來解決這個問題。然後,當我需要時,我重新輸入正斜槓。

不知道這是否是最好的解決方案,但它適合我的使用。