当没有通过ajax请求URL时(在wordpress页面上),PHP重定向


PHP redirect when URL is not requested through ajax (when on a wordpress page)

我有一个Wordpress网站,域名为Hello.com,是"ajaxified"。我想知道的是,如果用户使用浏览器地址栏访问Hello.com/askHello.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

希望这能帮助其他人!