0

在查看我网站的统计数据时,我意识到绝大多数流量来自第三方链接到经典 ASP 页面,而这些链接已经几年不存在了。

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

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

该规则有效,但它会选择任何以 .asp = 结尾的 url,例如 /pagenotfound.aspx?page=someurl.asp。

哎呀:)

我对正则表达式并不完全了解,我怎样才能让它忽略问号字符后面的“.asp”?

4

2 回答 2

2

试试这个:

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

这应该使它忽略任何以 .asp 结尾但包含 ? 在它之前。[^?] 表示“任何不是 ? 的字符” 而不是 * 表示“任何字符”。

编辑:添加了额外的模式以允许在 .asp 扩展名之后但不在它们之前的查询字符串。

于 2009-08-01T12:08:31.880 回答
0
<rewrite url="^~/browse/([^/.]+)\.aspx?$"
 to="~/browse-prints.aspx?dispCat=$1"/>

<rewrite url="^~/browse/([^/.]+)\.aspx(\?.*)?$"
 to="~/browse-prints.aspx$2&amp;dispCat=$1"/>
于 2009-12-16T10:06:45.233 回答