我将基于 ajax 构建我的应用程序,我的 URL 类似于:
http://server.com/module/#function_name,param1,param2...etc
在参考了一些关于 google 建议的讨论后:hashbang (#!),我不难意识到这不是最好的解决方案。有几个原因:
- 无论如何,URL 非常难看。
- 如果有一天谷歌(或其他一些搜索引擎)提出了一个比 hashbang 更好的解决方案,那就太糟糕了。我必须用 hashbang 保留我丑陋的 url,或者编写一些 js 代码来使指向我的页面的链接仍然有效。
- HTML5 pushState 总有一天会流行起来。
对于上述所有事情,我决定按照自己的方式进行:我的导航链接将是这样的:
<a href="http://server.com/module/for-crawler/function-name/param1/param2/...">
Some text </a>
一些 jQuery 代码将使其能够加载 ajax 内容,而不是像普通链接那样进行页面更改:
$(function(){
$('a').live('click',function(e){
var realURL = translateURL( $(this).attr('href') )
loadContent( realURL );
e.prevetnDefault();
return false;
})
})
/* -- the function translateURL will turn url like :
..... http://server.com/module/for-crawler/function-name/param1/param2/...
Into:
..... http://server.com/module/#function-name/param1/param2/...
That's the real url I think all ajaxers are used to dealing with
*/
当爬虫读取我的页面时,它会跟随“href”属性中的url,我会提供我页面的静态非js版本供google阅读。几天后,我的页面被编入索引,用户将在 Google 的搜索结果中看到我的页面,如下所示:
http://server.com/module/for-crawler/function-name/param1/param2/...
我将再次使用用户 js 将用户重定向到我的正常 ajax 版本,我的意思是,到真正的 URL:
http://server.com/module/#function-name/param1/param2/...
这是我目前能想到的最好的方法。请给我建议:我应该这样做,还是可以做得更好?谢谢大家!