【发布时间】:2012-04-07 16:58:27
【问题描述】:
我有一个用 C# 编写的 MVC3 应用程序,我想为其生成 rel=canonical 标签。在寻找自动实现这一目标的方法时,我遇到了this post。
我在我的开发环境中实现了它,它按预期工作并生成诸如
之类的标签<link href="http://localhost/" rel="canonical" />.
我的问题是,这有什么好处?规范 URL 不应该明确指向我想要它指向的位置(即我的生产站点),而不是 URL 碰巧是什么?
我提出这个问题的原因是因为我的托管服务提供商(暂时保持匿名)还生成了另一个指向我网站的 URL(相同的 IP 地址只是不同的主机名,我不知道为什么,他们声称这是为了反向 DNS 目的——这是另一个主题)。但是,我已经开始看到我的页面出现在这个镜像 URL 下的 Google 搜索结果中。对 SEO 不利,因为它是“重复内容”。现在,我通过简单地将我的 IIS 站点配置为仅响应对我站点域的请求来修复它,但是,现在似乎是查看规范 URL 可以在此处提供的解决方案类型的好时机。
使用上面帖子中的解决方案,如果有人要访问镜像站点,rel=canonical 链接标记将输出一个包含 MIRRORED URL 的规范 URL,这根本不是我想要的。无论地址栏中的 URL 是什么,它都应该是<link rel="canonical" href="http://www.productionsite.com" />,对吧?我的意思是,这不是规范 URL 的重点还是我遗漏了什么?
假设我是正确的,是否有一种可接受的通用方法来为 MVC3 应用程序生成规范 URL?我显然可以为每个页面单独定义它们,或者我可以简单地将我链接的解决方案中的rawUrl.Host 参数替换为硬编码的域名,我只是想知道为什么我看到这么多生成规范 URL 的示例当它似乎不符合目的时(至少在我的例子中)。他们试图通过将当前 URL 插入 rel=canonical 链接元素来解决什么问题?
【问题讨论】:
-
使用当前 URL 确实没有多大作用。更典型的用法是当稍微不同的 url(权限或路径)给出相同的页面时,all 的规范应该是 single 首选/权威 url
标签: c# asp.net-mvc canonical-link