2009-08-01 5 views
0

私のサイトの統計情報を調べると、数年前から存在していなかった従来のASPページへの第三者のリンク経由で大量のトラフィックが流れることに気付きました今。Intelligencia UrlRewriter regex .aspページを保持ページに使用

私は次のようにweb.configファイルにurlMappingsの束を追加すると、素晴らしいアイデアではなかったので、私はIntelligencia UrlRewriteを追加し、ルールを追加しようとしたことを決めた:

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

ルールが機能し、それは/pagenotfound.aspx?page=someurl.aspのように.asp =で終わるすべてのURLを取得します。

おっと:)

私は正規表現について正確に精通していないよ、どのように私はそれが疑問符の文字を、次の「の.asp」を無視して入手できますか?

答えて

2

はこれを試してみてください:それはの.aspで終わるが、含まれている任意のURLを無視すべきである

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

?その前に。 [^?]は、「文字ではない文字」を意味します。 *の代わりに*は "任意の文字"を意味します。

編集:クエリ文字列を許可するために追加のパターンを追加しましたの後に.asp拡張子がありますが、それらの前にはありません。

+0

ダブ、 お返事ありがとうございます。これは動作しますが、それは私の目的を破るようなクエリ文字列で.aspページを取り上げなくなったことを意味します - 私は合法的な.asp URLを検出し、リダイレクトする必要があります。文字列。 Thanksl –

+0

Heya Richard - url正規表現を拡張して.asp拡張の後にクエリ文字列の可能性を追加することができるはずです。上記の例を編集しました。私はそれに文法を釘付けているかどうか確かめてください)。 – Amber

+0

また、最初のピリオド(.asp)の前にあるバックスラッシュを追加しました。そうでなければ、リテラル期間ではなく任意の文字にマッチする正規の正規表現期間として解釈します。 /test.asp?aspのようなものに不適切にマッチする – Amber

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

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