2011-10-19 9 views
3

の最後にドットとリライトURLをIIS。 (私はそれらを修正することはできません)。インバウンドリンクは常に良好なので、これらのリンクを正当なページにリダイレクトする必要があります。私はiis.5のurlrewriteモジュールでいくつかのルールを試しましたが、何もこのURLを取得していないようです。は、私が誤っ期間は、それらの端部に追加していた私のサイトに来て、いくつかの外部リンクを持つURL

私はここで終わりにピリオドとasp.netのURLに関する上の他の質問を見てきましたが、私はIIS書き換えモジュールレベルでこの1をキャプチャしようとしています。この作品を作る上の指針は?あなたが間違っているインバウンドリンクの固定セットを持っている場合は

答えて

0

は、あなたではなく、ドットよりも、URLの主要部分をリダイレクトすることに集中することができます。このURLで例えば

、: http://www.example.com/index.html

は、「*。^ index.htmlの」URLマッチングのためのあなたのIISの書き換えをご覧必要なページにリダイレクトします。それはドットの有無にかかわらずURLを捕捉するはずです。

+0

私はこれを試しましたが、別のショットをつけてください。 –

1

私は前に、URL書き換えモジュールの実行モジュールの1つはで、終了していることを前提とこれはかなり古いものですが、私は最近、同様の問題に直面していたとして、私は私の調査結果を掲示することにしました...

例外は、要求がurl-rewrite(私はいくつかのセキュリティチェックを疑う)を続けることを妨げます。したがって、あなたの問題をurl-rewriteで解決することはできません。

一つの可能​​な回避策は、ドットで終わる要求をリダイレクトすることであろう「」 Global.asaxの中に非常に早い段階で、ここのように:

はるかに最適な答えからかもしれません
protected void Application_PreSendRequestHeaders(object sender, EventArgs e) 
{ 
    if (Context.Request.RawUrl.EndsWith(".aspx.")) 
    { 
     //permanent redirect and end current request... 
     Context.Response.RedirectPermanent(Context.Request.RawUrl.TrimEnd('.'), true); 
    } 
} 

しかし、少なくとも、それは仕事を取得します。)

+0

このリソースを直接変更するアクセス権がありません。これはASP.NET 2.0ランタイムで動作するはずですか?私はこれを修正しようとしている古いSharepointのインスタンスをたくさん持っています。 –

0

私はすべての末尾のドットを削除するソリューションを使用しましたweb.configファイルレベル:

<rule name="RemoveTrailingDots" stopProcessing="false"> 
    <match url="^(.*[^.])\.+$" /> 
    <action type="Rewrite" url="{R:1}" /> 
</rule> 

このルールは、ちょうど要求は通常の規則によって処理することを可能に代わりの

上流に巻き込まれて、私の書き換えルールの先頭に内部要求URLを書き換え

ルールを適用せずに最後にドットをリダイレクトする場合は、アクションタイプをRedirect(大文字と小文字を区別)に変更してください。

関連する問題