IIS重写web.config中的规则

时间:2013-12-06 05:23:54

标签: url iis rewrite

我的web.config文件中有以下规则:

<rule name="Reviews SEO Redirect" stopProcessing="true">
<match url="www.mysite.us/reviews/Manufacturer-([^~]*)-([^~]*)-([^~]*)" />
<action type="Redirect" redirectType="Permanent" url="www.mysite.us/reviews/{R:1}" />
</rule>

现在,我的目标是重定向这样的网址结构:

http://www.mysite.us/reviews/Manufacturer-X-Category-Y

http://www.mysite.us/reviews/X

如果我转到http://www.mysite.us/reviews/X,我会收到预期的内容。如果我转到原始URL,它会提取我在Drupal的View模块中创建的默认/评论VIEW。而且它根本不会改变浏览器窗口中的URL。所以它感觉它忽略了规则或者我的比赛错了。

我使用URL重写编辑器来测试规则,它似乎像我想要的那样解析,但是当我使用该URL结构访问我网站上的页面时,发生了什么。所以我想知道我错过了什么。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

匹配网址不包含主机名。它应该如下:

<rule name="Reviews SEO Redirect" stopProcessing="true">
  <match url="reviews/Manufacturer-([^~]*)-([^~]*)-([^~]*)" />
  <action type="Redirect" redirectType="Permanent" url="www.mysite.us/reviews/{R:1}" />
</rule>

This documentation显示了URL如何分解。测试功能的问题在于它不会减少IIS传入的值,并最终输入您期望的内容。因此它匹配。