在查看我的网站的统计数据时,我意识到绝大部分流量都是通过第三方链接传递到经典的ASP页面,这些页面现在已经存在几年了。
我决定在web.config中添加一堆urlMappings并不是一个好主意,所以我添加了Intelligencia UrlRewrite并尝试添加规则,如下所示:
<rewriter>
<redirect url="^/(.*).asp$" to="~/pagenotfound.aspx?page=$1" />
</rewriter>
该规则有效,但它会获取任何以.asp =结尾的网址,例如/pagenotfound.aspx?page=someurl.asp。
糟糕:)
我对正则表达式并不完全了解,如何让它忽略跟随问号字符的“.asp”?
答案 0 :(得分:2)
试试这个:
<rewriter>
<redirect url="^/([^?]*)\.asp(\?.*)?$" to="~/pagenotfound.aspx?page=$1" />
</rewriter>
这应该让它忽略任何以.asp结尾但包含?的URL在它之前。 [^?]的意思是“任何不是的角色?”而不是*表示“任何字符”。
编辑:添加了额外的模式,允许查询字符串在 .asp扩展名之后但不在它们之前。
答案 1 :(得分:0)
<rewrite url="^~/browse/([^/.]+)\.aspx?$"
to="~/browse-prints.aspx?dispCat=$1"/>
<rewrite url="^~/browse/([^/.]+)\.aspx(\?.*)?$"
to="~/browse-prints.aspx$2&dispCat=$1"/>