如何对基于 Ajax 的 URL 使用元刷新?

Posted

技术标签:

【中文标题】如何对基于 Ajax 的 URL 使用元刷新?【英文标题】:How to use meta refresh to an Ajax based URL? 【发布时间】:2016-01-01 11:01:47 【问题描述】:

我正在尝试将一些精选帖子从我的博主 URL 重新定位到位于 Wix 网站的新博客。 我正在尝试使用元刷新标签来为我的每个博主帖子转移我的 SEO。

Blogger 不提供博客域之外的 301 重定向。因此我使用元刷新标签。

我注意到 Wix 的博客页面有基于 Ajax 的 URL 链接。我是否应该在 Meta Refresh 标签(在博客文章中)中提供带有“#!”的 URL(Wix 帖子的)?还是元刷新中的 URL 应该是带有“?_escaped_fragment_”的 URL?

以下哪些 URL 会将 SEO 从博主帖子转移到 Wix 帖子?

【问题讨论】:

我投票结束这个问题,因为它是关于 SEO 的 嗯@johnconde,这不是关于提升帖子的一般要点。这更具体地说明了在 URL 是 Ajax 的情况下元刷新标记如何工作​​。此外 SEO 是可用的标签之一。 还有@johnconde,你能帮我解决这个问题的主题吗? 你可以将它发布在 ProWebmasters 论坛上,不过,我倾向于同意你的观点,@Tivep - 这篇文章是关于重定向代码的最佳实践,所以在这里并不太合适。 【参考方案1】:

如果您打算保留帖子的链接配置文件和搜索引擎优化价值,那么元刷新并不能完全取代 301 重定向。

不过,为了回答您的问题,Google 可以处理 hashbang (#!) 以及转义片段,具体取决于 Wix 网站的编码方式。您绝对应该参考 Google 的指南以使 AJAX 可抓取:

https://developers.google.com/webmasters/ajax-crawling/docs/learn-more

【讨论】:

感谢@FarhadD,我之前已经浏览过该链接。它没有说明是否需要重定向到带有 hashbang 或 ?_escaped_fragment_= 的链接才能发生正确的 SEO。 关键是你可以选择任何一种方法,只要你按照谷歌描述的步骤来确保hashbang URL是爬虫友好的。如果两者都同样简单,那么就提供最佳用户体验而言,选择权在您手中。也就是说,我经常发现 hashbanged URL 会给 SEO 带来更多麻烦,仅仅是因为正确处理它们的过程并不广为人知,而且不像使用常规 URL 参数那么简单 Tivep - 您找到问题的解决方案了吗?如果是这样,请您将其标记为答案。 我做了,我已经回答了。 谢谢。不幸的是,我认为这有点晚了,因为一旦赏金超时,社区就会自动选择不正确的答案。我只是希望在阅读其余答案之前没有人阅读并实施它,因为重定向脚本绝对不是处理这个问题的最佳方法。【参考方案2】:

在head标签中使用如下代码:

<noscript>
<meta http-equiv="Refresh" content="3;url=yourpage.html">
</noscript>

【讨论】:

【参考方案3】:

请你看看这个,它可能对你有用:

<html xmlns="http://www.w3.org/1999/xhtml">

<head><title>

      Welcome Back

title>

<meta http-equiv="Refresh" content="2; URL=/wwstore/Profile.aspx" />

head>



You can add this into an ASP.NET page with code like this:



// *** Create META tag and add to header controls

HtmlMeta RedirectMetaTag = new HtmlMeta();

RedirectMetaTag.HttpEquiv = "Refresh";



RedirectMetaTag.Content = string.Format("0; URL=1", this.Context.Items["ErrorMessage_Timeout"], NewUrl);

this.Header.Controls.Add(RedirectMetaTag);



But I never put 2 and 2 together to realize that the meta tag is actually mapping an HTTP header. A much easier way to do this is to simply add a header:


Response.AppendHeader("Refresh", "4");



Or refresh and go off to another page:



Response.AppendHeader("Refresh", "4; url=profile.aspx");

更多详情请看这里:http://weblog.west-wind.com/posts/2006/Aug/04/No-more-Meta-Refresh-Tags

【讨论】:

这个搜索是否友好?您是否有任何参考网站,我们可以在其中看到这一点,并验证它实际上是否以与 Google 上的 301 重定向相同的方式被拾取? 实际上我通过实验证实,当您的“内容=2”时,这将被视为 302 重定向,因此链接汁不会传递。除了我不能添加这种程度的代码,因为它是一个博客页面。还是谢谢。【参考方案4】:

Google 可以理解#! 符号。这不会是一个问题。

如果你在谷歌上查询site:www.[something-made-with-wix].com,你会在结果中看到所有#!形式的链接。

你可以试试this one作为例子。

【讨论】:

【参考方案5】:

经过多次反复试验,我找到了自己问题的答案。

这是我在旧的/url 上执行此操作时发生的情况

<meta http-equiv="Refresh" content="2; URL=new/url/#!BlogPost" />

这在 2 秒后进行了重定向,但经过数周的等待,旧的/url 继续显示在 google 上,而新的/url 从未出现过。

然后我在旧的/url上尝试了这个:

<meta http-equiv="Refresh" content="2; URL=new/url/?_escaped_fragment_=BlogPost" />

这也没有用。 然后我想如果 content=n (n is a number than 0) ,这将被视为 302 重定向。这是一个临时重定向。

所以我尝试了以下方法:

<meta http-equiv="Refresh" content="0; URL=new/url/?_escaped_fragment_=BlogPost" />

这是谷歌给出的奇怪反应。旧的/url 已从搜索结果中删除,新的/url 也无处可寻。这很糟糕,永远不要这样做。

最后的选择是:

<meta http-equiv="Refresh" content="0; URL=new/url/#!=BlogPost" />

这终于成功了。几天后,链接汁从旧/url 传递到新/url。然而,重要的是去谷歌网站管理员并重新抓取旧/网址。只有这样,链接汁才会被传递。

【讨论】:

以上是关于如何对基于 Ajax 的 URL 使用元刷新?的主要内容,如果未能解决你的问题,请参考以下文章

键盘输入时,如何在Ajax调用URL更改后停止MVC页面刷新

Ajax加载页面如何刷新地址栏URL的问题

基于H5 pushState和Ajax完美实现页面局部刷新

jquery如何定时 局部刷新一个div??

如何在 Python 中关注元刷新

如何利用jQuery局部刷新页面中的div元素