2010-08-25 197 views
1

我正在使用基於IIS7的URL重寫的多語言應用程序。需要正則表達式幫助!

我想下面的網址操作:

1. fr-ca > index.aspx?l=&lc=fr-ca 
2. fr-ca/ > index.aspx?l=&lc=fr-ca 
3. fr-ca/568/sometitle > index.aspx?l=568&lc=fr-ca 
4. 568/sometitle > > index.aspx?l=568&lc= 

從本質上講,最初的FR-CA是可選的。

我的當前規則:

<match url="^(fr-ca.)?([^/][0-9]+)?/*" /> 

失敗上#1

另一種嘗試:

<match url="^(fr-ca)?(.[0-9]+)?/*" /> 

通過了所有的要求,除了背面參考{R:2}給出/ 568在這個案例。

我想我可以添加另一個規則,僅在fr-ca的末尾添加一個/,但這看起來不正確。

感謝您的幫助!正則表達式驅使我瘋狂。

回答

0

自己排序。

^(fr-ca)?/?([0-9]+)? 

遍:

fr-ca 
fr-ca/ 
fr-ca/9 
fr-ca/9/ 
fr-ca/9/sometitle 
fr-ca/9/sometitle/ 
fr-ca/9/sometitle/anothertitle 

9 
9/ 
9/sometitle 
9/sometitle/ 
9/sometitle/anothertitle 
1

你應該這樣做嗎?你可以實際檢查Accept-Language頭......甚至可以從該ASP頁內檢查,而不是看他們打到哪個url(並重定向到我認爲是翻譯版的頁面)。

這意味着他們可以從一開始就看到他們希望看到的語言,並且無需點擊頁面頂部的那個笨拙的小旗幟。它不依賴於GeoIP或用戶交互。

檢查出來。

+0

你有沒有回答我的問題嗎? – ScottE 2010-08-25 18:12:59