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