IIS 7.x を使用していて、URL Rewrite 2.0 モジュールがインストールされていると仮定しています。
アプリケーションのweb.config<rewrite>
ファイルに、次のような要素を追加します。
<system.webServer>
<rewrite>
<rules>
<rule name="PDF Rewrite">
<match url="Content/PDF/([\w-]+)\.pdf" />
<action type="Rewrite" url="User/GetPdf/{R:1}" logRewrittenUrl="true" />
</rule>
</rules>
</rewrite>
</system.webServer>
の([\w-]+)
部分は、ファイル拡張子なしで PDF の名前 (この例では「 ABCurl="Content/PDF/([\w-]+)**\.pdf"
」)を「キャプチャ」します。の部分は、キャプチャされた文字列を挿入します。最終的な結果は次のとおりです。{R:1}
<action type="Rewrite" url="User/GetPdf/{R:1}" logRewrittenUrl="true" />
http://localhost:9000/Content/PDF/ABC.pdf
になります:
http://localhost:9000/User/GetPDF/ABC
PDF の名前を Action メソッドに渡す必要があると想定しているため、標準のルーティング パターンを実装すると{Controller}/{Action}/{id}
、は「 ABCid
」に設定されます。
私が見つけた URL Rewrite モジュールの最良の紹介は、実際にはURL Rewrite 1.1 configuration referenceです。2.0 ではなく v.1.1 用ですが、v.2.0 Configuration Referenceよりも優れた概要を提供します。最初から読む価値あり。特に、「書き換えルールからの URL 部分へのアクセス」セクションを理解する必要があります。
URL 書き換えモジュールをデバッグするには、IIS 7.x の "Failed Request Tracing" を使用できます。これは、その名前に反して、成功した要求と失敗した要求を追跡するために使用できます。このwww.iis.net エントリは、これを構成する方法と、利用可能な詳細なデバッグ情報の量を示しています。
また、この属性は、元の URLではなくlogRewrittenUrl="true"
、書き換えられた URL が標準の IIS ログに記録されることを意味することに注意してください。(元の URL と書き換えられた URL の両方をログに記録するために使用することはできません --- どちらか一方しか取得できません。)