使用Intelligencia UrlRewriter正则表达式.asp页面到保留页面

时间:2009-08-01 12:03:05

标签: regex web-config urlrewriter

在查看我的网站的统计数据时,我意识到绝大部分流量都是通过第三方链接传递到经典的ASP页面,这些页面现在已经存在几年了。

我决定在web.config中添加一堆urlMappings并不是一个好主意,所以我添加了Intelligencia UrlRewrite并尝试添加规则,如下所示:

  <rewriter>
    <redirect url="^/(.*).asp$" to="~/pagenotfound.aspx?page=$1" />
  </rewriter>

该规则有效,但它会获取任何以.asp =结尾的网址,例如/pagenotfound.aspx?page=someurl.asp。

糟糕:)

我对正则表达式并不完全了解,如何让它忽略跟随问号字符的“.asp”?

2 个答案:

答案 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&amp;dispCat=$1"/>