正则表达式替换url中的一个单词 - 301重定向使用URL重写IIS asp.net

时间:2014-06-09 16:39:39

标签: asp.net regex iis-7.5 url-rewrite-module

我想为

设置301重定向

mysite.com/banana mysite.com/fruit

mysite.com/banana/yellow mysite.com/fruit/yellow

mysite.com/banana/yellow/sale mysite.com/fruit/yellow/sale

(单词"黄色"和"销售"可以替换为任何东西,它们是路线中的变量。)

这适用于第一种情况,但不适用于其他情况:

<rule name="banana" stopProcessing="true">
  <match url="banana" />
  <action type="Redirect" url="fruit" />
</rule>

基于这个问题: replace underscore with dash using url rewrite module of iis

仅适用于第三种情况:

<rule name="banana" stopProcessing="true">
  <match url="(mysite.com.*/[^/]*?)banana/([^/_]*)/([^/_]*)$" />
  <action type="Redirect" url="{R:1}fruit/{R:2}/{R:3}" />
</rule>

我需要的是一个返回

的正则表达式

{R:1} mysite.com /

{R:2} / yellow / sale

{R:1} mysite.com /

{R:2}

2 个答案:

答案 0 :(得分:2)

为什么不保持简单?

<match url="mysite.com/banana(/.+)*$" />
<action type="Redirect" url="mysite.com/fruit{R:1}" />

或者如果你只想深入两个层次:

<match url="mysite.com/banana((?:/[^/]+){0,2})$" />
<action type="Redirect" url="mysite.com/fruit{R:1}" />

答案 1 :(得分:1)

以下内容如何:

<rule name="banana" stopProcessing="true">
    <match url="mysite.com/banana(.+)?" />
    <action type="Redirect" url="mysite.com/fruit{R:1}" />
</rule>