我有一个带有域的Wordpress网站:Hello.com
,这是“ajaxified”。
我想知道的是,如果用户使用浏览器地址栏访问Hello.com
,Hello.com/ask
或更深层次的内容,如何将用户重定向回Hello.com/cake
。
即使他们比Hello.com/cake/make
更深2度,我希望他们留在我网站的根目录。
我正在使用Wordpress,我的第一个想法就是将重定向脚本放在标题上,但最终会产生一个无限重定向循环。
如何在不将我的ajax请求重定向到主页的情况下将用户重定向到主页?
[如果你问我为什么不允许他们更深入,答案是:我 我正在使用ajax将更深层的页面和其他所有内容加载到div中]
答案 0 :(得分:6)
通过在其他地方之前的某处添加一个简短的PHP脚本,我能够使用以下条件检查我的页面的加载方式。
if(strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest')
它允许我通过PHP检查它是否通过Ajax。
当请求是ajax请求时,$_SERVER['HTTP_X_REQUESTED_WITH']
的值为xmlhttprequest
。
就我而言,这就是我使用它的方式:
if(strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {
header("Location: http://". $_SERVER['HTTP_HOST']."/");
}
会检查请求是否通过ajax完成,如果没有,则会重定向到网站/网络应用的主页/主屏幕。
我在阅读this post
后得到了这个想法注意: HTTP_X_REQUESTED_WITH的使用取决于您使用的JavaScript框架,如果它设置了该标头。我正在使用jQuery,它为你做到了。 此外,$ _SERVER并不完全是PHP的一部分,因此它还取决于您的服务器是否将该变量传递给PHP。 如果您使用的是Nginx服务器并且它不适合您,您可以尝试这样做: Passing HTTP_X_REQUESTED_WITH from nginx to php
希望这有助于其他人!