如何创建匹配多个 URL 的重写规则
How to create rewrite rule that matches multiple URLs
我现在每个语言都有这个,但正如你所看到的,它们都重写到同一页面:
<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>
这个占了很多space,请问有什么办法可以写得短一些吗?
我查看了这个 post: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 页面。
你在这里使用正则表达式,所以你可以使用:
^(help|ayuda|hilfe|aide)?/?$
所以你只需将依赖于语言的词放入 OR 结构中:
^(articles|artikelen|artikel)/([a-zA-Z0-9-+']+)?/?$
只要参数化部分始终相同,这就应该有效。
我现在每个语言都有这个,但正如你所看到的,它们都重写到同一页面:
<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>
这个占了很多space,请问有什么办法可以写得短一些吗?
我查看了这个 post: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 页面。
你在这里使用正则表达式,所以你可以使用:
^(help|ayuda|hilfe|aide)?/?$
所以你只需将依赖于语言的词放入 OR 结构中:
^(articles|artikelen|artikel)/([a-zA-Z0-9-+']+)?/?$
只要参数化部分始终相同,这就应该有效。