Sco*_*ott 7 c# asp.net-mvc canonical-link
我有一个用C#编写的MVC3应用程序,我想生成rel = canonical标签.在搜索SO以便自动实现此目的时,我遇到了这篇文章.
我在我的开发环境中实现它,它按预期工作并生成标签,如
<link href="http://localhost/" rel="canonical" />
.
我的问题是,这有什么用呢?规范URL不应该明确指向我想要的地方(即我的生产网站),而不是URL恰好是什么?
我提出这个问题的原因是因为我的托管服务提供商(现在仍然无名)也生成另一个指向我网站的URL(相同的IP地址只是一个不同的主机名,我不知道为什么,他们声称这是为了反向DNS目的) - 这是另一个主题).但是,我已经开始在此镜像网址下看到我的网页显示在Google搜索结果中.对SEO不好,因为它是"重复内容".现在,我通过简单地配置我的IIS站点以仅响应对我站点的域的请求来修复它,但是,似乎是查看规范URL在此处提供的解决方案类型的好时机.
使用上面帖子中的解决方案,如果有人要去镜像站点,那么rel = canonical link标签会输出一个包含MIRRORED URL的规范URL,这根本不是我想要的.<link rel="canonical" href="http://www.productionsite.com" />
无论地址栏中的URL如何,它都应该是正确的吗?我的意思是,这不是规范网址的重点,还是我错过了什么?
假设我是正确的,是否有一种可接受的通用方法来为MVC3应用程序生成规范URL?我显然可以为每个页面单独定义它们,或者我可以简单地替换rawUrl.Host
我用硬编码域名链接的解决方案中的参数,我只是想知道为什么我看到这么多人以这种方式生成规范URL的例子似乎不符合目的(至少在我的例子中).他们试图通过将当前URL插入rel = canonical链接元素来解决什么问题?
很好的问题,您对镜像站点仍然被标记为规范站点感到很兴奋。事实上,在它进一步影响你的“链接效率”之前,你必须解决几个问题。
我怀疑主要原因是因为 MVC 在设计上是一个 URL 重写/路由系统。因此,根据最初请求的 URL 发生的消息,人们试图将规范链接设置为“确定的”最终 URL 格式,即重写后。也就是说,我认为您已经注意到了大多数人都存在的疏忽,即“到达该页面的 URL 怎么样,这些 URL 没有被预期并被重写成为该 URL 的有效、规范路径?” 这里的答案是,当您发现这些“错误请求”时重写它们。例如:如果您重写了 ISP 的镜像域请求,那么当它到达加载的页面时,它现在是一个有效的 url;这是因为它是由您的重写规则“修复”的。合理?因此,您需要更新 MVC 路由以处理 ISP 创建的错误路由。注意:在构建规范链接值时,您必须确保不使用最初请求的 URL,而是使用最终重写的 URL。
继续我的 WWW 与非 WWW 技巧,以及您提到的有关不处理无效 URL 的问题。
人们这样做也是因为您的网站已经“镜像”了人们总是忘记的另一个域。“WWW”子域。
不管你是否相信,尽管存在争议,但许多人都表示,拥有 www.yourdomain.com/mypage.htm 和 yourdomain.com/mypage.htm 实际上会因“重复”内容而损害您的页面排名。我怀疑这就是为什么人们在那里显示“相同的域”,因为它实际上是剥夺了“WWW”的域。(我使用重写规则来使 www 与 no-www 保持一致。)
另外,要小心“将我的 IIS 站点配置为仅响应对我站点域的请求”,因为如果 Google 仍然看到那里的链接并认为它们是您站点的一部分,它实际上可能会因为页面加载失败而对您进行惩罚(即 404s)我建议有一个重写规则,将它们发送到您的“真实”域,或者至少将规范链接设置为仅使用您的“真实”域,WWW 始终存在或不存在。(有人争论哪个更好,我认为只要你保持一致,这并不重要。)
归档时间: |
|
查看次数: |
2312 次 |
最近记录: |