2012-02-22 75 views
1

我正在運行多個基於模板的網站,使用IIS上的web.config將domain.com/spagepage轉換爲domain.com/default.asp?page=somepage以包含正確的來自更高級目錄的文件。我使用看起來像規則:匹配所有字符並重定向,除非字符串包含

<rule name="friendly-urls"> 
    <match url="^[a-zA-Z0-9_]+" /> 
    <conditions logicalGrouping="MatchAll" /> 
    <action type="Rewrite" url="default.asp?page={R:0}" /> 
</rule> 

的問題是,每個網站也有一個移動版本,可在domain.com/m/的方式,以及重定向設置,現在,該地址會重定向到domain.com/default.asp?page=m不知何故,我需要爲m /目錄中的任何內容創建一個例外,但我不太瞭解正則表達式或web.config來完成此操作。如果有人能幫忙,我會非常感激。

回答

0

我不熟悉的web.config規則,但也許這會工作,或者至少讓你開始:

<rule name="friendly-urls"> 
    <match url="^([a-zA-Z0-9_]+/)?([a-zA-Z0-9_]+)$" /> 
    <conditions logicalGrouping="MatchAll" /> 
    <action type="Rewrite" url="{R:1}default.asp?page={R:2}" /> 
</rule> 

新的正則表達式將輸入網址進入一個可選的第一場比賽(其中包括正斜槓)和所需的第二場比賽。我們希望將第一個匹配添加到輸出網址。如果沒有第一個匹配項(對於非移動URL),它應該添加一個空字符串。然後第二個匹配將像往常一樣附加到輸出URL。

鑑於 「SomePage的」,它應該生產 「的default.asp?頁= SomePage的」

鑑於 「M/SomePage的」,它應該產生 「M/Default.asp的?頁= SomePage的」

我無法測試任何東西,但正則表達式,但我希望這有助於!

相關問題