我已经更改了我的网站数据库,并且已经更改了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中
如果您的DB具有旧的url,则可以以编程方式填充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);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句