- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个用 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,这根本不是我想要的。它应该总是 <link rel="canonical" href="http://www.productionsite.com" />
,不管地址栏中的 URL,对吧?我的意思是,这不是规范 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 一致,或者不存在。 (有人争论哪个更好,我认为这不重要,只要你是一致的。)
关于c# - 基于当前 URL 创建规范 URL 有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10056449/
假设我拥有域 mydomain.com,并且我在服务器上有一个 Web 应用程序,网址为 http://99.99.99.99:1234/MyApplication/startpage.somethi
我正在尝试通过以下方式更新已解析的 URL: u, _ := url.Parse(s) if u.Scheme == "" { u.Scheme = "https" } if u.Path =
如何将 www.somesite.com/api(.*) 映射到 www.somesite.com/$1:9000? (我需要将/api 映射到运行 @ 端口 9000 的 Play 框架应用程序)
我有一个资源结构,如航类 > 座位 > 预订,所以预订属于某个航类的某个座位: http://example.com/jdf_3prGPS4/1/jMBDy46PbNc
我想知道以下网址是否有效。 路径中的点,在主机之后: http://www.example.com/v.b.w..com 主机中的点,作为子域的一部分: http://v.b.w..co.manufa
我有两个域 - crmpicco.co.uk 和 ayrshireminis.com - 如果我浏览到: www.crmpicco.co.uk/mini/new我希望能够重定向到 www.ayrshi
我正在尝试使用 URL 重写和应用程序请求路由来重写到外部 URL。我设置了以下规则: 在规则中,“patternToMatch”是我试
我已经安装了带有 SharePoint 和 Url Rewrite 模块的 IIS 7.0。 是以下句子还是我配置错误才能看到这个结果? Url Redirect 可以将 url 重定向到任何内部(在
我想知道,为了获得良好的 SEO,您必须在 URL 中使用自然语言。您知道字符中单词或短语的最大大小吗?例如: www.me.com/this-is-a-really-long-url.htm 我问这
有人知道在 SEO 友好 URL 中使用逗号有什么问题吗?我正在使用一些在其 SEO 友好 URL 中使用大量逗号的软件;但我 100% 肯定我见过一些程序/平台无法正确识别 URL 并在第一个逗号后
我有一个网站,我正在为所有链接使用干净的 URL。我想知道对于简短的基本 URL 与较长的描述性 URL 有何看法。 例如,如果我的网站是关于 Georgia Bulldog 足球新闻的,那么哪个网站
我正在编写一个类似于 tinyurl 的 URL 缩短器,我想知道如何跟踪已经使用我的服务缩短的 URL?例如,tinyurl 为相同的长 URL 生成相同的小 URL,而不管是谁创建的。如
我是 magento 的新手。我正在开发一个模块。为此,我有一些要显示链接的 css 和 js 文件。我目前有类似 的链接 getSkinUrl('module_tryouts/css/jquery.
我想基于 HTTP_URL 重写 URL 以重定向到不同的端口,同时保留其余的 URL 和查询字符串(如果指定)。例如, http://host/john/page.aspx 应该重定向到 http:
我遇到了以下问题: 我的 Grails (2.2.0) 应用程序具有以下 URL 映射: "/api/clientQuote/$labcode/$cliCode/$quoCode"(controlle
我有一个很长的 URL,它不适合 URL 字段。它一直在修剪。该怎么办?有没有办法增加 SharePoint 2010 中的 URL 字段字符限制? 或者解决方法来容纳长 URL。例如,以下 URL
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题? Update the question所以它是on-topic对于堆栈溢出。 9年前关闭。 Improve this que
我们从客户以前的开发人员那里继承了相当多的 Google Apps 脚本项目。 Apps 脚本通过嵌入式小部件部署在 Google 网站 (sites.google.com) 的各个页面上。每当我们需
我正在编写一些文档,但遇到了一些词汇问题: http://www.example.com/en/public/img/logo.gif 被称为“绝对”网址,对吗? ../../public/img/l
我们从客户以前的开发人员那里继承了相当多的 Google Apps 脚本项目。 Apps 脚本通过嵌入式小部件部署在 Google 网站 (sites.google.com) 的各个页面上。每当我们需
我是一名优秀的程序员,十分优秀!