微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – Durandal 2.0路由器可以替换###!为ajax网页抓取目的?

可以替换Durandal 2.0中的认路由器行为来替换认路由,例如:’mysite.com/#/myroute’与’mysite.com/#!/myroute’的原因是为了google蜘蛛检测页面是可以爬虫的,我需要在url中插入一个hashbang,而不仅仅是一个主题标签.任何帮助将不胜感激.

谢谢!

解决方法

据我所知,在Durandal 2.0中,你无法做到这一点.路由器和历史插件不支持这一点,这不是一个简单的修复,因为代码中有一些依赖#的地方.

但是,我不认为这是您的场景中的问题.也许你需要改变处理应用程序可抓取的要求的方法.

您仍然可以使用#by在应用程序的主HTML中指定元片段类型来使您的应用程序SEO兼容:

<Meta name="fragment" content="!">

所以你告诉谷歌你的链接没有#!但应用程序正在使用JavaScript渲染.然后来自爬网程序的请求将包括
?_escaped_fragment_.

所以在你的应用程序你将使用:

mysite.com/#myroute

履带将要求:

mysite.com?_escaped_fragment_=myroute

检查Google的documentation on crawling的第3部分,了解更多有关元片段标签的信息.

建议

如果要充分利用此功能,我建议在Durandal 2.0中使用pushState,通过激活路由器:

router.activate({ pushState: true } );

并且还包括元片段标签.

<Meta name="fragment" content="!">

如果使用pushState,你应该考虑的事情:

>只有当您不打算支持旧版浏览器时,请使用pushState.
>您需要使服务器端pushState准备就绪,这意味着当mysite.com/myroutes请求服务器时,可以返回相同的JS应用程序,让客户端处理查询字符串参数.例如,如果您使用ASP.NET,可以使用IIS URL重写来实现.这个话题有一个很好的blog post.

原文地址:https://www.jb51.cc/ajax/153100.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐