我正在构建一个 AJAX 深度链接网站。
如果用户尝试使用不支持 Javascript 的浏览器或搜索爬虫访问站点,我希望 PHP 加载页面的所有 HTML 代码。基本上 PHP 会返回整个页面。
相反,当用户尝试使用支持 Javascript 的浏览器访问该站点时,我希望 PHP 只返回模板代码,并让 Javascript (AJAX) 负责其余的工作。基本上 PHP 只会加载设计元素并让 Javascript 用内容填充它们。
我查看了 PHP 的get_browser()
功能,但它似乎不是一个可靠的工具。业界的做法是看浏览器支持Javascript还是使用PHP的搜索爬虫?
背景:
为什么我希望网站有这种行为。
由于我希望仅通过加载地址来加载主页example.com
,而不向 PHP 发送任何查询,因此 PHP 返回主页的 HTML 代码。但是,当用户尝试加载以下页面时,这会导致问题:example.com#foo
. 所以,对于这个例子,PHP 将返回主页,一旦主页被加载,Javascript (AJAX) 将改变内容,以便它显示正确的内容#foo
. 这将使用户看到主页,因此加载时间会变慢,用户体验也不会那么好。但是,如果我的 PHP 脚本可以确定,如果使用支持 Javascript 的浏览器正在尝试加载页面,它只会返回没有内容的网站模板)并且 javascript 将使用内容填充该模板应该为#foo 显示。另一方面,如果 Javascript 非分隔浏览器或爬虫尝试访问该页面example.com#foo
,则会返回主页。
我正在使用 SWFaddress ( http://www.asual.com/swfaddress/ ) 库进行深度链接。
编辑
感谢你们。之前没想过用<noscript></noscript>
。
这是我决定做的。默认情况下,PHP 将加载诸如example.com
或之类的页面(这与 PHP 的观点example.com#foo
基本相同,因为根据定义,片段不会发送到服务器)空白(只是可视模板),其中包含主页内容的标签。这样,使用 javascript 的用户将看不到主页,而 AJAX 将根据片段填充页面的内容。另一方面,搜索爬虫和没有 javascript 的用户会看到一个主页。example.com
<noscript>
#foo
再次感谢你。我认为这是非常简单而优雅的解决方案。如果您有任何进一步的建议,请发表评论或其他答案。