2010-12-03 4 views
0

URLリライタを使用して、WebアプリケーションでユーザーフレンドリーなURLを作成し、次のルールを設定します。 Url RewriterでURL​​の最後の部分を変数に変換する

<rewrite url="/(?!Default.aspx).+" to="/letterchain.aspx?ppc=$1"/> 

$ 1をURLの最後の部分に置き換えるにはどうすればよいですか?

だから次

www.mywebapp.com/hello

/letterchain.aspx?ppc=hello

に変換します私はドキュメントを読んだが何も見つけることができない。

答えて

1

グループのto部分の$ 1は、定義された最初のキャプチャグループ(たとえば、角カッコ内の部分)を参照します。

$ 1に実際に注入したい部分は、キャプチャグループにはありません。

は私はわからないが、私はこのためにありえないが、番号キャプチャグループので、$ 1このはず作品としてカウント「マッチ接尾辞が存在しない場合は、」クエリを考える:

<rewrite url="/(?!Default.aspx)(.+)" to="/letterchain.aspx?ppc=$1"/> 

もし(?!)

<rewrite url="/(?!Default.aspx)(.+)" to="/letterchain.aspx?ppc=$2"/> 
+0

ちょうど両方を試してみましたが、両方の状況のPPCで=」「)/(?!Default.aspx)(.+」であります" –

+0

hmmこれはExpresso(正規表現開発ツール)で動作しました。あなたはppc = ""と書いているときに書き直しがうまくいって、あなたをそのページに送るのですか? /letterchain.aspx?ppc=が左手部分に一致するので、私たちは無限ループを作成したことが私に起こりました。属性としてprocessing = "stop"を追加してみてください。 – rtpHarry

+0

また、URLの書き換えに拡張性のないURLを一致させようとしている場合は、iis7またはiis6のワイルドカードマッピングを設定する必要があります(http://professionalaspnet.com/archive/2007/07/27/Configure-IIS-for-Wildcard -Extensions-in-ASP.NET.aspx) – rtpHarry

0

あなたはIIS 7+のために開発されている場合http://www.iis.net/download/urlrewrite/が低くフットプリントでより高速な書き換えを行い、マイクロソフトからのモジュールであることに注意してください:それはだけではなく、あなたの文字列にに第二の捕捉グループを挿入しようとし、その後doesntの。

ところで、あなたの正規表現は、小さな問題を抱えている、あなたはドット文字をエスケープする必要があり、それは

関連する問題