Использование Intelligencia UrlRewriter regex .asp страниц на удерживающей странице

Просматривая статистику по моему сайту, я понял, что подавляющее большинство трафика идет через сторонние ссылки на классические страницы 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 ответа

Решение

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

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

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

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

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

<rewrite url="^~/browse/([^/.]+)\.aspx(\?.*)?$"
 to="~/browse-prints.aspx$2&amp;dispCat=$1"/>
Другие вопросы по тегам