【问题标题】:seo duplicate content issueseo重复内容问题
【发布时间】:2014-05-03 08:39:57
【问题描述】:

我有一个 asp.net 站点,当我在分析器站点中检查它时,它评论说我的站点存在重复内容的问题...www.mysite.com 和 mysite.com 显示相同的内容... 一些网站建议添加类似以下链接的内容可以解决问题:

<link rel="canonical" href="http://www.mysite.com" />

但显然它不会...有人告诉我应该在网站的 web.config 中修复它但是我找不到解决方案...关于这个问题有什么建议吗?

【问题讨论】:

    标签: asp.net web-config seo


    【解决方案1】:

    您可以添加全局过滤器以根据不同的 url 删除重复项:

    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());
    }
    

    【讨论】:

    • 谢谢...我应该使用普通 .cs 文件中的第一部分,然后使用 global.asax 中的其他代码吗?
    • @sara.y 完全正确。首先作为一个单独的 cs 文件,而不是在 global.asax.cs 中注册它
    【解决方案2】:

    您应该决定要使用哪个域,并为其设置永久重定向(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>
    

    如果你不能使用它,写你自己的模块并不难,它将所有请求重定向到某个域

    【讨论】:

    • 感谢您的回答...我应该将此代码放在 标记中吗?
    • @sara.y 是的,但请确保已安装该模块
    • 我好像默认没有...我应该如何在我的服务器上安装它?
    • @sara.y 最简单的使用方式Web Platform Installer
    猜你喜欢
    • 2012-11-26
    • 2012-04-19
    • 2015-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-04
    • 2017-03-25
    相关资源
    最近更新 更多