我有一个asp.net网站,当我在分析器网站上检查时,它评论说我的网站有重复内容的问题... www.mysite.com和mysite.com显示相同的内容... 一些网站建议添加类似下面的链接可以解决问题:
<link rel="canonical" href="http://www.mysite.com" />
但显然它不会......有人告诉我,我应该在网站的web.config中修复它但是我找不到解决方案......有没有关于这个问题的建议?
答案 0 :(得分:1)
您可以添加全局过滤器以根据不同的网址删除重复项:
public class RemoveDuplicateContentAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var routes = RouteTable.Routes;
var requestContext = filterContext.RequestContext;
var routeData =requestContext.RouteData;
var dataTokens = routeData.DataTokens;
if (dataTokens["area"] == null)
dataTokens.Add("area", "");
var vpd = routes.GetVirtualPathForArea(requestContext, routeData.Values);
if (vpd != null)
{
var virtualPath = vpd.VirtualPath.ToLower();
var request = requestContext.HttpContext.Request;
if (!string.Equals(virtualPath, request.Path))
{
filterContext.Result = new RedirectResult(virtualPath + request.Url.Query, true);
}
}
base.OnActionExecuting(filterContext);
}
}
然后在global.asax文件中添加此过滤器:
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new RemoveDuplicateContentAttribute());
}
答案 1 :(得分:1)
您应该决定要使用哪个域,并为其设置永久重定向(301)。
使用IIS Url Rewrite模块的一种可能的解决方案(但您必须得到提供商的支持,否则您必须自己添加)。我们假设你想从mysite.com重定向到www.mysite.com:
<rewrite>
<rules>
<rule name="You name here" stopProcessing="true">
<match url="(.*)"/>
<conditions>
<add input="{HTTP_HOST}" pattern="^mysite.com$"/>
</conditions>
<action type="Redirect" redirectType="Permanent" url="http://www.mysite.com/{R:1}"/>
</rule>
</rules>
</rewrite>
如果您无法使用它,那么编写您自己的模块并不难,它会将所有请求重定向到某个域