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

前端之家收集整理的这篇文章主要介绍了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.f2er.com/ajax/153100.html

猜你在找的Ajax相关文章