我有一个Wordpress网站,域名为Hello.com
,是"ajaxified"。我想知道的是,如果用户使用浏览器地址栏访问Hello.com/ask
、Hello.com/cake
或其他更深层次的内容,如何将用户重定向回Hello.com
。
即使它们像Hello.com/cake/make
一样深入2度,我也希望它们留在我网站的根上。
我使用Wordpress,我的第一个想法是将重定向脚本放在标题处,但最终导致了一个无限的重定向循环。
如何在不将ajax请求重定向到主页的情况下将用户重定向到主页?
[如果你问我为什么不允许他们深入,答案是:我我使用ajax将更深层次的页面和其他所有内容加载到div中]
通过在其他内容之前添加一个简短的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完成的,如果不是,则重定向到网站/web应用程序的主页/主屏幕
我在阅读这篇文章后有了这个想法
注意:HTTP_X_REQUESTED_WITH的使用取决于您正在使用的JavaScript框架(如果它设置了该标头)。我使用的是jQuery,它为您服务。另外,$_SERVER并不完全是PHP的一部分,因此它还取决于您的服务器是否将该变量传递给PHP。如果你在Nginx服务器上,它不适合你,你可以试试这个:将HTTP_X_REQUESTED_WITH从nginx传递到php
希望这能帮助其他人!