Использование 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&dispCat=$1"/>