Использование Intelligencia UrlRewriter regex .asp страниц на удерживающей странице - PullRequest
0 голосов
/ 01 августа 2009

Просматривая статистику по моему сайту, я понял, что подавляющее большинство трафика идет через сторонние ссылки на классические страницы ASP, которые не существуют уже несколько лет.

Я решил, что добавление набора urlMappings в web.config не было хорошей идеей, поэтому я добавил Intelligencia UrlRewrite и попытался добавить правило следующим образом:

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

Правило работает, но оно берет любой URL, заканчивающийся на .asp =, например /pagenotfound.aspx?page=someurl.asp.

Упс:)

Я не совсем осведомлен о регулярных выражениях, как я могу заставить его игнорировать ".asp", который следует за символом вопросительного знака?

Ответы [ 2 ]

2 голосов
/ 01 августа 2009

Попробуйте это:

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

Это должно заставить его игнорировать любой URL, который заканчивается на .asp, но содержит? перед этим. [^?] Означает "любой символ, который не является?" вместо *, что означает «любой символ».

Редактировать: Добавлен дополнительный шаблон для разрешения строк запроса после расширения .asp, но не перед ними.

0 голосов
/ 16 декабря 2009
<rewrite url="^~/browse/([^/.]+)\.aspx?$"
 to="~/browse-prints.aspx?dispCat=$1"/>

<rewrite url="^~/browse/([^/.]+)\.aspx(\?.*)?$"
 to="~/browse-prints.aspx$2&amp;dispCat=$1"/>
...