繁体   English   中英

如何创建与多个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>  

这会占用很多空间,是否有办法写得更短?

我签出了这篇文章: 如何在web.config中添加多个URL重写规则 ,但这并不能使它更短。 有什么方法可以重复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-+']+)?/?$ 

只要参数化的部分始终相同,这应该起作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM