IIS URL RewritingとASP.NET routing(下)


IIS URL RewritingとASP.NET routing(上)では、IIS URL RewritingとASP.についてNET routingのコンセプトと機能をそれぞれ分析して比較し、これらの基本原理と異同を明らかにした後、私たちはどのように応用の中で適切なURL最適化案を選ぶべきですか?本稿では,これについて検討分析を行い,両者の協同応用例をいくつか例示する.
本文はIIS公式サイトから翻訳され、国内で慣用されている用語について一部調整された.

どうすればいいの?


まず、私たちのWebアプリケーションにASP以外のものがあれば.NET以外の動的ウェブページ技術では、IIS URLでモジュールを書き換える(IIS URL-rewrite module).そうでなければ、主な判断ルールは以下の通りです.
  • もし私たちのASP.NET WebアプリケーションはASPを使用する.NET MVCまたはASP.NET Dynamic Dataテクノロジーは、ASP.NETルーティング.当社のアプリケーションURL最適化プロセスは、オリジナルサポートから利益を得る(ASP.NET MVCおよびASP.NET Dynamic Dataには、ASP.NET Routingが直接含まれる).初期のASP.NETルーティングではWebFormはサポートされていませんが、現在のバージョンでは標準のWeb Formアプリケーションがサポートされています.詳しくはこちらを参照.
  • 既存のASPに基づいている場合NETサイトで、なるべく変更しないようにしたい場合は、URL書き換えモジュールを使用してください.URL書き換えモジュールは、既存のプログラムを変更することなく、ウェブサイトに「ユーザーフレンドリー」「検索エンジンフレンドリー」のURLを提供することができるからです.同様に、検索エンジンの爬虫類を新しいURLにリダイレクトするリダイレクトルールを作成することもできます.

  • しかし、実践の中でこの2つの技術は1つしか選択できないわけではありません.彼らは往々にして相補的に成り立つことができます.次の章では、ASPを使用するいくつかの共同使用について概説する.NETルーティングとURL書き換えモジュールの例.
    ウェブサイトのために標準的なURLを強制的に実施する
    例えば強制的に使用したいhttp://www.mysite.com/home/about代わりにhttp://mysite.com/Home/About. クライアントが標準フォーマットに適合しないURLを要求すると、クライアントトロフィーは標準フォーマットに適合するURLにジャンプする.この場合、URL書き換えモジュールを使用するURLジャンプを強制し、ASPを使用することができる.NETパスは、要求されたURLパスを処理するためにhandlerを選択することに由来する.
    次のコードは、このケースで使用可能なURL書き換えモジュール構成コードを示しています.
    <rewrite>
        <rules>
            <rule name="Enforce canonical hostname" stopProcessing="true">
                <match url="(.*)" />
                <conditions>
                    <add input="{HTTP_HOST}" negate="true" pattern="^www\.mysite\.com$" />
                </conditions>
                <action type="Redirect" url="http://www.mysite.com/{R:1}" redirectType="Permanent" />
            </rule>
        </rules>
    </rewrite>
    

     
    他のWebサイトまたは他のサーバからの静的コンテンツの提供
    たとえば、Webサイトは複数のサーバに配置され、動的ページのコンテンツは1つのサーバまたは1つのWebサイトに配置され、すべての静的コンテンツは別のサーバまたは別のWebサイトに配置されます.この場合,URL書き換えモジュールを用いてIISアプリケーションRequest Routing moduleと連携してレンズコンテンツの要求を静的コンテンツサーバ(ウェブサイト)に転送し,現在のサーバがすべての動的ウェブページ要求を処理することができる.この環境では、ASP.NETルーティングは、静的コンテンツではなく、すべての動的Webコンテンツにのみ有効です.
    次のコードは、このケースで使用可能なURL書き換えモジュール構成コードを示しています.
    <rewrite>
      <rules>
        <rule name="Forward to static file server">
          <match url="^.+\.(?:jpg|bmp|gif)$" />
          <action type="Rewrite" url="http://static_file_server/{R:0}" />
        </rule>
      </rules>
    </rewrite>
    

     
    静的コンテンツ管理
    私たちのウェブサイトの静的なコンテンツが新しいアドレスに移動すると、古いURLをサポートして後方互換性を実現する必要があります.ユーザーにファイルやフォルダが移動したことを感じさせたくないこともあります.この場合、URL書き換えモジュールを用いる静的ファイルの経路を書き換えるとともに、ASPを用いることができる.NET路は全ての動的ASPを扱うことに由来する.NETページ.
    次のコードは、このケースで使用可能なURL書き換えモジュール構成コードを示しています.
    <rewrite>
      <rules>
        <rule name="Rewrite to new folder">
          <match url="^Images/(.+)$" />
          <action type="Rewrite" url="NewImages/{R:1}" />
        </rule>
      </rules>
    </rewrite>
    

     
    特定のリクエストをブロック
    URL書き換えモジュールは、場合によっては指定された要求を阻止するために使用できます.たとえば、Webサイトの爬虫類が特定のURLパスにアクセスすることを阻止することができます.この場合、ブロックされたリクエストがASPに届かないようにします.NETのルーティング処理は,サーバの負荷を低減する.
    次の例では、指定したWebサイトの爬虫類を阻止するためにURL書き換えルールを構成する方法を示します.指定されたuser-agent HTTPヘッダまたはIPアドレスに基づいてブロックできます.
    <rewrite>
      <rules>
        <rule name="Block SomeRobot" stopProcessing="true">
          <match url="^folder1/folder2" />
          <conditions logicalGrouping="MatchAny">
            <add input="{USER_AGENT}" pattern="SomeRobot" />
            <add input="{REMOTE_ADDR}" pattern="201\.45\.33\.[0-5]" />
          </conditions>
          <action type="AbortRequest" />
        </rule>
      </rules>
    </rewrite>
    

     

    発展の方向


    IIS URL書き換えとASP.NETルーティングは機能的にいくつか重複しているが,それらはシナリオ位置決め上および技術的に互いに独立している.従って,この2つの技術はIISの独立した構成として持続的に存在し,さらに発展し,両者には大きな集積可能性がある.例えば、ASP.NETルーティングは、URL書き換えモジュールの強力な管理ツールを参照する場合があります.URL書き換えモジュールはASP.NETは、より強力な拡張性とカスタマイズ性を提供するために、より統合されています.

    結論


    IIS URL書き換えとASP.NETルーティングはいずれもWebアプリケーションのURL最適化処理に用いることができるが、ASP.NETルーティングはASPと見なすことができる.NETの最適化ソリューションは、Web開発者が友好的なURLのアプリケーションを設計する際に良い選択です.IIS URL書き換えモジュールは汎用的なURL処理メカニズムであり、多くの技術シーンに位置し、特にweb開発者とウェブサイト管理者がプログラムコードを変更せずにURLを最適化することができる.

    関連ドキュメント

  • URL-rewrite module documentation and tutorials
  • ASP.NET routing documentation
  • ASP.NET MVC
  • ASP.NET Dynamic Data

  • リファレンス

  • Using URL Rewrite Module
  • Provide URL Rewriting Functionality
  • Rule with Rewrite Map - rule template
  • IIS URL Rewriting and ASP.NET routing