很多人一直在说,使用pushState而不是hashbang.
我不明白的是,如果不使用hashbang,你将如何成为搜索引擎友好的?
据推测,您的pushState内容是由客户端JavaScript代码生成的.
因此情况如下:
我在example.com.我的用户点击了一个链接:href="example.com/blog"
pushState捕获单击,更新URL,从某处获取JSON文件,并在内容区域中创建博客文章列表.
使用hashbangs,google知道转到escaped_fragment网址以获取其静态内容.
使用pushState,Google只会看到任何内容,因为它无法使用JavaScript代码加载JSON并随后创建模板.
我能看到的唯一方法是在服务器端渲染模板,但这完全否定了将应用程序层推送到客户端的好处.
所以我说得对,pushState对客户端应用程序来说根本不是SEO友好的吗?
如果我在骨干路由器中启用pushState,是否需要在所有链路上使用return false或者骨干是否自动处理?那里有任何样本,包括html部分和脚本部分.
我目前正在开发一个新项目,整个页面应该在HTML5/JS中实现,而不是API/JSON.由于整个应用程序应该只包含一个HTML文件(index.html)和一个JS MVC应用程序(可能是backboneJs),我正在考虑SEO和用户友好的URL.
在那里我遇到了
window.document.pushstate('','title','/url');
Run Code Online (Sandbox Code Playgroud)
借助该html5功能,我可以定义URL而无需真正离开或重新加载页面.但是...... 出于性能原因和低费用,我想将应用程序部署到像Amazon CloudFount这样的CDN中.我不需要任何服务器基础设施(当然除了我需要的API)
因此,无论调用什么URL,我都可以配置CDN(实际上是任何类似AWS,Azure,Akamai的CDN)来提供相同的HTML文件
http://www.example.com =>发送index.html
http://www.example.com/any_subpage =>发送index.html
等等 ...
您可以在http://html5.gingerhost.com找到一个工作示例.但该页面的创建者可能会使用.htaccess文件或熟悉的东西将所有内容映射到同一文件.我想在CDN中提供相同的功能.
我有一个网站,我使用underscorejs.我有很多模板(underscorejs)包含在HTML中.
在某些情况下,页面上会读取不必要的模板.这会影响我的网站的SEO评级.
我听说Google搜索引擎会降低您网站的排名,如果它在<script>标签中找不到Javascript代码的话.
在指定underscorejs模板时,我们指定它
<script type="text/template" id="XXX"></script>
Run Code Online (Sandbox Code Playgroud)
PS:我知道readig不必要的模板并不好,但这是在网站上很长一段时间内完成的,我不打算很快编辑它.