ASP.NETでのURL書き換え



リンクを最適化して、検索エンジン( SEOなど)でより適切にインデックスを作成する必要がある場合があります。 記号「?」、「&」、および「=」を含むリンクを読みやすい形式に書き換える必要があるとします。



たとえば、次のようなリンクをやり直します。

www.domain.com/default.aspx?category=Title&entry=Name



そのようなより理解しやすい:

www.domain.com/Title/Name



ASP.NETでUrl Rewritingを実現する方法はいくつかあります。



1.標準のASP.NET 2.0が提供するものを利用できます。つまり、 urlMappings要素を使用します。 Web.configファイルに次の行を追加します。



< system.web >

< urlMappings enabled = "true" >

< add url = "〜/ Home.aspx" mappedUrl = "〜/ Default.aspx?tab = home" />

</ urlMappings >

</ system.web > *このソースコードは、 ソースコードハイライターで強調表示されました。


この方法は簡単で便利ですが、ここではすべてのリンクが「 ハードコーディング 」されます。 この方法を使用すると、オプションが制限されます。 リンクを動的に書き換えることはできません。





2. UrlRewritingNet.UrlRewriteと呼ばれるオープンソースモジュールもあります。 UrlRewritingNetは、本質的にDLLファイルのコレクションです。 それらを使用するには、プロジェクトの/ Bin /ディレクトリでそれらを書き換える必要があります。



次に、プロジェクトのWeb.configファイルに次の行を追加します。



< 設定 >

< configSections >

< セクション = "urlrewritingnet" requirePermission = "false" type = "UrlRewritingNet.Configuration.UrlRewriteSection、UrlRewritingNet.UrlRewriter" />

</ configSections >

< 設定 >



< system.web >

< httpModules >

< 名前を 追加 = "UrlRewriteModule" タイプ = "UrlRewritingNet.Web.UrlRewriteModule、UrlRewritingNet.UrlRewriter" />

</ httpModules >

</ system.web > *このソースコードは、 ソースコードハイライターで強調表示されました。


最後に、リンクを書き換えるためのルール:

< urlrewritingnet rewriteOnlyVirtualUrls = "true" contextItemsPrefix = "QueryString" defaultPage = "default.aspx" xmlns = " www.urlrewriting.net/schemas/config/2006/07 " >

< 書き換える >

< add name = "Rule1" virtualUrl = "^〜/(.*)/ Detail (。*)&# 60 ; / strong > .aspx" rewriteUrlParameter = "ExcludeFromClientQueryString" destinationUrl = "〜/ Default.aspx?language = $ 1 id = $ 2 "ignoreCase =" true " />







</ 書き換える >

</ urlrewritingnet > *このソースコードは、 ソースコードハイライターで強調表示されました。
例からわかるように、 UrlRewritingNetでは、正規表現を使用してリンクを動的に書き換えることができます。



UrlRewritingNetの使用は、専用のホスティングがない場合、つまり、サーバーレベルでURLを書き換える機能がない場合に便利です。



UrlRewritingNetのすべての機能について詳しくは こちらご覧 ください 。また、モジュール自体はこちらからダウンロードできます



3.私の意見では、URLを書き換える正しい方法はISAPI書き換えフィルターを使用することです。 これは、 Apache .htaccess mod_rewrite向けに記述された標準ルールを受け入れるIIS用のモジュールです。 サイト自体にIISを介してISAPIフィルターとしてインストールする必要があります。



リンクを書き換えるための.htaccessファイルの例:



RewriteEngine on

RewriteRule ^/(.*)/(.*)/(.*).aspx /Default.aspx?Title=$1&Description=$2&Topic=$3






この例では、次のリンクを参照します。

www.domain.com/Default.aspx?Title=A&Description=B&Topic=C



これにより、読みやすく短くなります。

www.domain.com/A/B/C.aspx



そして、ここでは、物理的にあなたのサイトにある他のサイトからの画像の表示をブロックすることで、あなたのサイトからのむさぼるトラフィックを克服することができます。



RewriteEngine on

RewriteCond %{HTTP:Host}#%{HTTP:Referer} ^([^#]+)#(?!http://\1).+

RewriteRule .*\.(?:gif|jpg|png) /block.gif [NC]






ISAPI書き換えは、 IISレベルでURLを書き換えます。 ここであなたの可能性はほとんど無限です。 ISAPI書き換えの機能は、リンクの書き換えに限定されません。



ISAPI Rewriteフィルターの詳細についてはこちらを ご覧ください 。無料のモジュールはこちらからダウンロードできます。 無料版と有料版の違いは、無料版ではすべてのルールが1つのファイルに保存され、IISのすべてのサイトで有効であることです。 有料版では、特定のサイトに対してルールを作成できます。



このトピックに関する有用な記事:

-ASP.NET 2.0のURLマッピング

- ヒント/トリック:ASP.NETでのURL書き換え

-ASP.NET 2.0の完全なURL書き換えソリューション

-ASP.NETでのURL書き換え



PS

これは、Habréに関する私の最初の多かれ少なかれ深刻な投稿なので、厳密に判断しないでください。

ロシア語のあらゆる種類の修正だけでなく、喜んでいます。 :)



All Articles