我正在构建一个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脚本能够发现,如果使用with site支持的浏览器试图加载页面,它将只返回网站的模板,该模板不包含任何内容),而Javascript将使用为#foo显示的内容填充该模板。另一方面,如果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的用户将看到主页。
再次感谢您。我认为这是非常简单和优雅的解决方案。如果您有任何进一步的建议,请张贴评论或其他答复。
发布于 2010-11-16 18:15:34
您不能使用PHP来完成这个任务。但是,如果没有javascript,则可以使用noscript标记重定向到另一个php页面:
<noscript>
<meta http-equiv="refresh" content="0; URL=nojavascript.php">
</noscript>
发布于 2010-11-16 18:12:19
这是不可能做到这一点的方式,你正在努力做到这一点。
很少有人关掉JS而不知道。
PHP不会在#之后传递任何东西,只有javascript才能用它完成任何事情。因此,即使PHP能够确定浏览器是否打开了javascript,它仍然无法读取#。
发布于 2010-11-16 18:16:56
您可以在一些<NOSCRIPT>
标记中包含一个链接,它将用户指向类似于example.com#foo?javascript=disabled
的东西。
不幸的是,浏览器没有报告是否启用JS,因此无法从简单的HTTP中知道是否应该发送依赖于JS的页面。
https://stackoverflow.com/questions/4197431
复制相似问题