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.

相关文章

IE6是一个非常老旧的网页浏览器,虽然现在很少人再使用它,但...
PHP中的count()函数是用来计算数组或容器中元素的个数。这个...
使用 AJAX(Asynchronous JavaScript and XML)技术可以在不...
Ajax(Asynchronous JavaScript and XML)是一种用于改进网页...
本文将介绍如何通过AJAX下载Excel文件流。通过AJAX,我们可以...
Ajax是一种用于客户端和服务器之间的异步通信技术。通过Ajax...