[英]asp.net 301 redirect for big data
我更改了我的網站數據庫,並且更改了 10000 多個 url,我需要執行 301 重定向,處理 301 重定向這樣大量數據的最佳方法是什么?
用web.config不行,文件會很大,費很大力氣
<httpRedirect enabled="true" exactDestination="true" httpResponseStatus="Permanent">
<add wildcard="/MyOldAspFile.aspx" destination="/MyNewFile.aspx" />
<add wildcard="/MyOldHtmlFile.html" destination="/MyNewFile.aspx" />
</httpRedirect>
那么,處理這種情況的最佳方法是什么?
我想建議為此目的使用重寫映射。 並將重寫映射存儲在另一個文件中。 在您的 web.config 中,它將是:
<rewrite>
<rewriteMaps configSource="rewriteMaps.config"/>
<rules configSource="rewriteRules.config"/>
</rewrite>
在你的 rewriteRules.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.config 中:
<rewriteMaps>
<rewriteMap name="Redirects">
<add key="/old1" value="/new1" />
<add key="/old2" value="/new2" />
</rewriteMap>
</rewriteMaps>
並且 URL 重寫模塊應該安裝在你的 IIS 中
如果您有帶有舊網址的數據庫,您可以以編程方式填充 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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.