Stu*_*rts 10 javascript ajax internet-explorer url-design hashtag
我创建了一个包含URL形式的网页http://www.example.com/module/content 这是一个非常动态的网页,实际上它是一个网络应用程序.
为了使其尽可能响应,我想使用AJAX而不是普通的页面请求.这也使我能够使用JavaScript添加图层来提供离线功能.
我的问题是:我应该如何制作网址?它们应该是http://www.example.com/module/content还是http://www.example.com/#!/module/content?
以下只是我对两个方向的想法.如果您已经清楚地想到这一点,则无需阅读.
我想使用第一个版本,因为我想支持新的HTML5标准.它易于使用,URL看起来很漂亮.但更重要的是它允许我这样做:
如果用户请求页面,它将获得完整的HTML页面.
如果用户然后单击链接,它将仅通过AJAX将内容插入到容器div中.
这将使没有JavaScript的用户能够使用我的网站,因为它不需要使用JavaScript,它只需使用普通的"点击链接请求 - 获取完整的html页面"-approach.
虽然这很好,但问题当然是Internet Explorer.只有IE的最新版本支持History API,并且要在旧版本中使用它,需要使用#标签.(我的用户中有50%将使用IE,所以我需要支持它...)所以我必须使用/#!/来使其正常工作.
如果使用这两个URL版本,问题就出现了如果IE用户将此链接发布到网站,Google将向服务器发送_unescaped_string(或类似的..)并且它将使用IE版本索引该页面井号.有些页面没有标签.
正如我们记得的那样,非标签在许多不同的东西上更好.那么,这个搜索引擎问题可以被规避吗?是否有可能告诉GoogleBot,如果它到达网站的主题标签版本,它应该被重定向到网页的非主题标签版本?这样,人们就可以获得非主题标签URL的所有好处,并且仍然支持IE6-IE9.
您认为最好的方法是什么?也许你自己在实践中尝试过它?感谢您的回答!
如果您希望Google为您的Ajax内容编制索引,那么您应该像这样使用#!key = value.这就是Google更喜欢 Ajax导航的地方.
如果你真的更喜欢没有#的漂亮的HTML5网址!那么,是的,你可以支持两者而无需索引问题!只需添加:
<link rel="canonical" href="preferredurl" />
Run Code Online (Sandbox Code Playgroud)
到<head>
每个页面的部分(初始加载),以帮助谷歌知道你希望他们索引哪个版本的网址.在这里阅读更多关于规范网址的信息.