我需要创建此301重定向规则:
/blog/item.asp?n=12817
重定向到/blog/item/12817
我在IIS URL Rewrite模块中使用以下参数创建了一个规则:
模式:^blog/item.asp\?n=([0-9]+)
重定向网址:blog/item/{R:1}
当我在IIS中测试它时工作正常,它在我的web.config中创建了这个规则:
<rule name="Asp classic Legacy 301 redirect" stopProcessing="true">
<match url="^blog/item.asp\?n=([0-9]+)" />
<action type="Redirect" url="blog/item/{R:1}" appendQueryString="true" />
</rule>
但是,当我在浏览器中导航到/blog/item.asp?n=12817
时,它会显示The resource cannot be found.
错误,文字为Requested URL: /blog/item.asp
为什么会这样?我需要在某个地方切换别的东西吗?
由于
答案 0 :(得分:3)
好的,我创建了另一个有效的规则:
<rule name="Asp classic legacy 301 redirect">
<match url="blog/item\.asp$" />
<conditions>
<add input="{QUERY_STRING}" pattern="n=(\d+)" />
</conditions>
<action type="Redirect" url="blog/item/{C:1}" redirectType="Permanent" appendQueryString="false"/>
</rule>
仍然想知道为什么Url重写模块会生成不起作用的规则?