2015-06-28 63 views
0

我現在有這個每語言相匹配的重寫規則,但你可以看到他們都重寫到同一頁:如何創建多個URL

<rule name="help en"> 
     <match url="^help?/?$"/> 
     <action type="Rewrite" url="help.aspx"/> 
    </rule> 
    <rule name="help sp"> 
     <match url="^ayuda?/?$"/> 
     <action type="Rewrite" url="help.aspx"/> 
    </rule> 

或更復雜的參數重寫,如:

<rule name="news category overview_de"> 
    <match url="^artikelen/([a-zA-Z0-9-+']+)?/?$" /> 
    <action type="Rewrite" url="newsoverview.aspx?category={R:1}" /> 
</rule> 

<rule name="news category overview_en"> 
    <match url="^articles/([a-zA-Z0-9-+']+)?/?$" /> 
    <action type="Rewrite" url="newsoverview.aspx?category={R:1}" /> 
</rule> 

這佔用了很多空間,那麼有沒有辦法將這個縮短?

我查看了這個帖子:How to add multiple URL rewrite rules in a web.config,但這並沒有縮短。 有沒有一種方法可以重複match url條件或向其添加多個網址?

更新1

我嘗試這樣做:

<rule name="news overview"> 
    <match url="^(artikelen|articles)?/?$" /> 
    <action type="Rewrite" url="newsoverview.aspx" /> 
</rule> 
<rule name="news category overview"> 
    <match url="^(artikelen|articles)/([a-zA-Z0-9-+']+)?/?$" /> 
    <action type="Rewrite" url="newsoverview.aspx?category={R:1}" /> 
</rule> 

但這會重定向請求,甚至對我的主頁到newsoverview.aspx頁面。

回答

1

您在這裏使用正則表達式,所以你可以使用:

^(help|ayuda|hilfe|aide)?/?$ 

所以你只要把依賴於語言的字成或構建:

^(articles|artikelen|artikel)/([a-zA-Z0-9-+']+)?/?$ 

這應該工作,只要在參數化部分總是相同的。

+0

啊,tnx!這將如何處理更復雜的參數化重寫?我添加了一個樣本。 – Flo

+0

@Flo - 查看我的編輯 –

+0

嗨,看看我的更新。所有的主頁請求現在也使用我的新重寫規則重定向...我錯過了什麼? – Flo