经典ASP应用基于t变量的IIS URL重写与重定向规则配置咨询
我来帮你搞定经典ASP应用的URL重写配置,核心要做两件事:一是让用户访问的友好URL能内部映射到真实的go.asp(地址栏不变),二是把旧的动态go.asp链接永久跳转到友好URL(对SEO友好)。下面用IIS官方的URL Rewrite模块来实现,这是目前最常用的方案:
一、内部重写规则(友好URL → 真实ASP路径)
这部分是服务器内部偷偷把友好URL转换成go.asp的动态请求,用户完全感知不到。把以下规则加到你的web.config文件的<system.webServer><rewrite><rules>节点里:
<rule name="Rewrite t=5 to cat URL" stopProcessing="true"> <match url="^cat/([^/]+)/([^/]+)$" /> <action type="Rewrite" url="go.asp?t=5&group={R:1}&sub={R:2}" /> </rule> <rule name="Rewrite t=15 to S URL" stopProcessing="true"> <match url="^S/([^/]+)$" /> <action type="Rewrite" url="go.asp?t=15&number={R:1}" /> </rule>
规则解释:
<match url="^cat/([^/]+)/([^/]+)$" />:匹配以cat/开头,后面跟着两段非斜杠字符的URL(比如cat/electronics/phones),([^/]+)是正则分组,分别对应group和sub的值,用{R:1}和{R:2}引用。stopProcessing="true":匹配到这条规则后就不再往下匹配其他规则,避免冲突。<action type="Rewrite">:告诉服务器内部重写到指定的go.asp路径,带上对应的参数。
二、301永久重定向规则(旧动态URL → 友好URL)
如果还有用户通过旧的go.asp?t=xxx链接访问,我们需要用301重定向引导到友好URL,这对搜索引擎收录很重要。同样在<rules>节点里添加以下规则:
<rule name="Redirect t=5 to cat URL" stopProcessing="true"> <match url="^go\.asp$" /> <conditions> <add input="{QUERY_STRING}" pattern="^t=5&group=([^&]+)&sub=([^&]+)$" /> </conditions> <action type="Redirect" url="cat/{C:1}/{C:2}" redirectType="Permanent" /> </rule> <rule name="Redirect t=15 to S URL" stopProcessing="true"> <match url="^go\.asp$" /> <conditions> <add input="{QUERY_STRING}" pattern="^t=15&number=([^&]+)$" /> </conditions> <action type="Redirect" url="S/{C:1}" redirectType="Permanent" /> </rule>
规则解释:
<match url="^go\.asp$" />:匹配直接访问go.asp的请求。<conditions>:检查查询字符串是否符合t=5&group=xxx&sub=yyy或t=15&number=xxx的格式,([^&]+)捕获参数值,用{C:1}和{C:2}引用。redirectType="Permanent":发送301状态码,告诉搜索引擎这是永久跳转,更新收录链接。
后续添加新规则的思路
以后要加其他t值的规则,直接照着上面的模板套就行:
- 先写内部重写规则:匹配新的友好URL格式,重写到
go.asp?t=xx&参数={R:n}。 - 再写301重定向规则:匹配
go.asp加上对应的t参数和其他参数,跳转到新的友好URL。
注意规则的顺序:把更具体的规则放在前面(比如如果有某个t值的URL格式和其他规则有重叠,优先匹配具体的),避免规则冲突。
内容的提问来源于stack exchange,提问作者little_big_adventure
相关产品推荐
相关产品推荐

