2017-02-01 8 views
-1

私のウェブサイトのデータベースを変更しました。私は10000以上のURLを変更しました。301リダイレクトを行う必要があります。その大量のデータを301リダイレクト?asp.net 301巨大なデータのリダイレクト

私はweb.configファイルを使用してそれを行うcannt、ファイルの意志が非常に大きくなり、それはとても

<httpRedirect enabled="true" exactDestination="true" httpResponseStatus="Permanent"> 
    <add wildcard="/MyOldAspFile.aspx" destination="/MyNewFile.aspx" /> 
    <add wildcard="/MyOldHtmlFile.html" destination="/MyNewFile.aspx" /> 
</httpRedirect> 

多くの努力がかかりますが、その場合に対処するための最良の方法は何ですか?

答えて

2

そのためにリライトマップを使用することをお勧めします。書き換えマップを別のファイルに保存します。 web.configには、次のようになります。

<rewrite> 
    <rewriteMaps configSource="rewriteMaps.config"/> 
    <rules configSource="rewriteRules.config"/> 
</rewrite> 

あなたのrewriteRules.config;あなたのrewriteMaps.configで

<rules> 
    <rule name="Rule for Redirects"> 
     <match url=".*" /> 
     <conditions> 
     <add input="{Redirects:{REQUEST_URI}}" pattern="(.+)" /> 
     </conditions> 
     <action type="Redirect" url="{C:1}" appendQueryString="false" /> 
    </rule> 
</rules> 

<rewriteMaps> 
    <rewriteMap name="Redirects"> 
     <add key="/old1" value="/new1" /> 
     <add key="/old2" value="/new2" /> 
    </rewriteMap> 
</rewriteMaps> 

そして、URL書き換えモジュールは、あなたのIISで

をインストールする必要がありますが、古いURLでDBを持っている場合は、プログラムでrewriteMapsを埋めることができます。シンプルなロジックのサンプルはここにある:

var urls = new Dictionary<string, string>(); 
urls.Add("/old", "/new"); 

var lines = new List<string>(); 

lines.Add("<rewriteMaps>"); 
lines.Add("<rewriteMap name=\"Redirects\">"); 

foreach (var url in urls) 
{ 
    lines.Add(string.Format("<add key=\"{0}\" value=\"{1}\" />", url.Key, url.Value)); 
} 

lines.Add("</rewriteMap>"); 
lines.Add("</rewriteMaps>"); 

System.IO.File.WriteAllLines(@"rewriteMaps.config", lines); 
+0

それは、大きなファイルの問題を解決するかもしれないが、どのように私はプログラム的にそれを行うことができ、私はそれがリンクによってリンクする書き込みカント、私は古いURLのテーブルを持っている私は –

+1

あなたがそれを使用することができますか?あなたのために適切な形式でXMLを構築するいくつかのシンプルなコンソールアプリケーションを書くことができます –

+0

サンプルコードであなたの答えを記述してくださいできますか? –

関連する問題