查看我的这篇文章,它提供了许多不同的选项来避免在您的 ASP.NET 站点中出现重复的 URL:Techniques for Preventing Duplicate URLs in Your Website。我总结了下面的各种技术,但请参阅文章以获得更深入的处理,以及示例 ASP.NET 网站演示。
从 ASP.NET 发出永久重定向
您可以在 Global.asax 文件的 Application_BeginRequest 事件处理程序中检查每个请求的传入 URL。如果 URL 缺少前导 www.,您可以附加它并永久重定向到新 URL。
protected void Application_BeginRequest(object sender, EventArgs e)
{
if (Request.Url.Authority.StartsWith("www"))
return;
var url = string.Format("{0}://www.{1}{2}",
Request.Url.Scheme,
Request.Url.Authority,
Request.Url.PathAndQuery);
Response.RedirectPermanent(url, true);
}
使用 IIS 7 的 URL 重写模块将 URL 重写为规范形式
如果您的网站由 IIS7 托管并且安装了 Microsoft 的 URL Rewrite Module,那么您可以在 Web.config 文件中添加重写规则。我没有使用 GoDaddy 托管的任何网站,所以我不知道他们是否使用 IIS7(我想他们会这样做)或者是否安装了 URL 重写模块。请与支持人员联系。
假设满足这些先决条件,您将使用以下配置:
<configuration>
...
<system.webServer>
<rewrite>
<rules>
<rule name="Canonical Host Name" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTP_HOST}" pattern="^yoursite\.com$" />
</conditions>
<action type="Redirect" url="http://www.yoursite.com/{R:1}" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
通过第三方应用程序重写
许多网络托管公司都安装了第三方 URL 重写应用程序,例如 ISAPI_Rewrite。我不知道 GoDaddy 是否有此功能,您需要与支持人员联系。但这可能是另一种选择。
在标记中告诉搜索引擎蜘蛛您的规范形式
不必担心将用户重定向到www. 版本,您可以让用户随心所欲地到达您的网站,但在您的页面上添加标记以告知搜索引擎您的 URL 的规范形式。
要指定规范 URL,只需在网页的 <head> 部分添加一个 <link> 元素。其工作方式如下 - 将以下标记添加到您网站中您希望搜索引擎考虑所有相同 URL 的那些页面的 <head> 部分:
<link rel="canonical" href="canonical_url" />
如果您在 Stackoverflow.com 上查看/源代码,您会看到这个 <link> 标记。这是确保您网站中重复的网址(例如,www.yoursite.com/foo.aspx 和 yoursite.com/foo.aspx)在搜索引擎索引中被视为相同条目的好方法。
编程愉快!