2012-04-21 9 views
4

私は、hereと記載された手法を使用して、オンザフライで動的に生成されるサイトマップを実装しました。動的にsitemap.xmlを生成する

私のサイトはWebFormsアプリケーションなので、私のサイトマップのURLはwww.mydomain.com/Sitemap.aspxになります。

これはうまくいきました。検索エンジンのウェブマスターツールを使用して、自分のサイトマップのURLを伝えることができます。しかし、より小さな検索エンジンでは、このファイルをどこに見つけるかわからないことがあります。ダイナミックに生成されたサイトマップがwww.mydomain.com/sitemap.xmlにあると良いでしょう。これはサイトマップの標準URLです。

私が今行っている同じサイトマップデータを生成する最も簡単な方法は、ファイルsitemap.xmlとして表示されます。ルーティングを使用して行うことはできますか、カスタムHTTPハンドラが必要ですか?

私はwebformsを使用していますが、ASP.NET MVCを使用しているサイトも持っていますので、両方のプラットフォームでこれを行うための最良の手法を見つけることに非常に関心があります。 Webフォーム用

答えて

9

、あなたは、HttpModuleをを使用してMVCについてUrlRewriting.NET

をチェックアウトし、ルーティングを使用することができます:Webフォーム用

routes.MapRoute("Sitemap", 
       "sitemap.xml", 
       new { controller = "Home", action = "Sitemap" }) 
+0

hmm ... MVCソリューションは理想的です。 Webformsソリューションではなく、(IISを実行する必要のあるサードパーティ製のコントロールで、将来のバージョンのASP.NETで動作する場合と動作しない場合があります)。私はサイトをMVCに書き直す計画をしていますが、すぐにはいつでもできません。ありがとう。 –

+0

OPがIIS 7以上を使用している場合、Webサーバー用のネイティブ[URL書き換え](http://www.iis.net/download/urlrewrite)があります。はるかに便利です。コーディングなし。 web.configのほんの数行。 – Oybek

+0

@Oybekはい、最新のソフトウェアを使用しています。これは私にとって興味深いように見えます。 (私は共有ホスティングを使用していますが、すべてのIIS設定にアクセスすることはできません)。ありがとう。 –

2

を前述したように、また、あなたのweb.configファイルを更新することができ、あなただけの使用プレーンaspxまたはascxページし、次に書き直しで魔法をします:-)(私は.net 4.0を使用します)

<system.webServer> 
<rewrite> 
    <rules> 
    <rule name="Main Sitemap" stopProcessing="true"> 
     <match url="^sitemap.xml"/> 
     <action type="Rewrite" url="sitemap/sitemap.aspx" appendQueryString="false"/> 
    </rule> 
    </rules> 
</rewrite> 
</system.webServer> 
+0

がある場合はURL書き換えを使用してください。これは有望だが、動作させることができませんでした。この特定のサイトはまだVisual Studio 2010でビルドされています。そのサイトと関係があるかどうかはわかりません。 –

+0

とにかく、私はこれと 'routes.MapPageRoute(" Sitemap "、" Sitemap.xml "、"〜/ Sitemap.aspx ");とうまくいっているようです。まだテスト中です... –

+0

URLリライトをインストールしてこのXMLを使用し、Visual Studioの警告を無視しました。 –

関連する問題