如果用户正在使用不支持Javascript的浏览器或搜索爬虫访问站点,我希望PHP加载页面的所有HTML代码。基本上,PHP将返回整个页面。
相反,当用户使用支持Javascript的浏览器访问站点时,我希望PHP仅返回模板代码,并让Javascript(AJAX)处理其余部分。基本上,PHP只会加载设计元素,然后让Javascript填充内容。
我研究了PHP的get_browser()函数,但似乎它并不是一个可靠的工具。业内惯例如何使用PHP判断浏览器是否支持Javascript或者是否为搜索爬虫?
背景:
为什么我希望网站有这种行为。
因为我希望主页只需加载地址:example.com
,而不发送任何查询到PHP,PHP将返回主页的HTML代码。然而,当用户尝试加载以下页面时会出现问题:example.com#foo
。因此,对于此示例,PHP将返回主页,一旦主页加载完成,Javascript(AJAX)将更改内容,以显示#foo
的正确内容。这将使用户看到主页,因此加载时间将更慢,用户体验也不太好。但是,如果我的PHP脚本可以确定正在尝试加载页面的支持Javascript浏览器的用户,则它将仅返回网站的模板(没有内容),而javascript将使用内容填充该模板,无论应该显示什么内容。另一方面,如果Javascript非分离浏览器或爬虫尝试访问页面example.com#foo
,则将返回主页。
我正在使用SWFaddress(http://www.asual.com/swfaddress/)库进行深度链接。
编辑
谢谢大家。我之前没有想到使用 <noscript></noscript>
。
这是我决定采取的方法。PHP默认会加载像 example.com
或 example.com#foo
(从PHP的角度来看,这与 example.com
本质上相同,因为按定义片段不会发送到服务器)的页面为空白(只有视觉模板),其中包含 <noscript>
标签,用于主页的内容。这样,具有 JavaScript 的用户将无法看到主页,并且 AJAX 将根据 #foo
片段填充页面的内容。另一方面,搜索爬虫和没有 JavaScript 的用户将看到一个主页。
再次感谢。我认为这是一个相当简单而优雅的解决方案。如果您有任何进一步的建议,请发表评论或另一个答案。