IIS URL重写规则 - 测试有效,但没有结果

时间:2016-10-13 09:13:55

标签: regex iis url-rewriting url-rewrite-module iis-8.5

我在编写IIS 8.5的URL重写规则时遇到问题。我编写规则的专业知识几乎不具有中间性,文档也没有用处。

我正在尝试重定向以下网址:

hostname.com/sub1/sub2/sub3/sub4

到此网址:

hostname.com/sub1/sub6/sub7/sub2/sub4

就此而言,我的意思是 -

  • hostname.com是一个变量。这个.NET应用程序提供了多个主机名。
  • sub1保持不变,不是变量。
  • sub2是应该触发模式的sub,而不是 变量,但它会移动到URL中的其他位置。
  • 鉴于前两点,我假设字符串'sub1 / sub2' 应该硬编码到模式中以识别URL 转换并避免重定向循环。
  • sub3被删除。
  • sub4是一个变量。
  • sub6和sub7不是变量。

我知道我错误地使用了术语变量 - 我的意思是变量是URL的那些部分发生了变化,需要被捕获并用作后向引用。

让我用一个例子来澄清:

https://hostname.com/application/catalog/v3g5h6j8k9/feline-footwear

到 - >

https://hostname.com/application/showcase/default/catalog/feline-footwear

我编写规则的所有尝试都失败了。我确定我做错了什么。

我以为我接近这一点。模式测试全部成功,但它不会接收传入的URL。我刚拿到404:

            <rule name=“Catalog redir” enabled=“true” stopProcessing="true">
                <match url=“^(.*)/application/catalog/(.*)/(.*)” />
                <action type="Redirect" url=“{R:1}/application/showcase/default/catalog/{R:3}” redirectType="SeeOther" />
            </rule>

我也尝试过使用([a-zA-Z0-9 _ + - ] +)代替(。*)

此外,我将此规则安装在树的/应用程序级别,而不是根目录。这可能不正确吗?或者更好地提出,网站树中规则的位置如何与模式相关联?我也无法在文档中找到它。

提前感谢任何建议。

1 个答案:

答案 0 :(得分:0)

关于格式,树中规则的放置是个问题。由于它没有放在根目录中,而是放在/ application中,一旦我摆脱了第一部分,所以匹配url的开头是应用程序,它开始工作。