2015-06-28 98 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