不通过ajax请求URL时的PHP重定向(在wordpress页面上时)

Jom*_*ejo 2 html php apache ajax .htaccess

我有一个带有域名的Wordpress网站:Hello.com这是"ajaxified".我想知道的是如何使用浏览器地址栏重新定向用户,Hello.com如果他们访问Hello.com/ask, Hello.com/cake或更深入.

即使他们更深2度Hello.com/cake/make,我希望他们留在我网站的根源.

我正在使用Wordpress,我的第一个想法是将重定向脚本放在标题上,但最终创建了一个无限重定向循环.

如何在不将我的ajax请求重定向到主页的情况下将用户重定向到主页?

[如果你问我为什么不允许他们更深入,答案是:我使用ajax将更深的页面和其他所有内容加载到div中 ]

Jom*_*ejo 6

通过在其他地方之前的某处添加一个简短的PHP脚本,我能够使用下面的条件检查我的页面是如何加载的.

if(strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest')
Run Code Online (Sandbox Code Playgroud)

它允许我检查PHP是否通过Ajax.

$_SERVER['HTTP_X_REQUESTED_WITH']xmlhttprequest当请求是ajax请求时.

就我而言,这就是我使用它的方式:

if(strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {
    header("Location: http://". $_SERVER['HTTP_HOST']."/");
}
Run Code Online (Sandbox Code Playgroud)

这将检查请求是否通过ajax完成,并重定向到网站/网络应用程序的主页/主屏幕,如果没有.

读完这篇文章后我明白了


注意: HTTP_X_REQUESTED_WITH的使用取决于您使用的JavaScript框架,如果它设置了该标头.我正在使用jQuery,它为你做到了.此外,$ _SERVER并不完全是PHP的一部分,因此它还取决于您的服务器是否将该变量传递给PHP.如果您使用的是Nginx服务器并且它不适合您,您可以尝试这样做:将 HTTP_X_REQUESTED_WITH从nginx传递给php

希望这有助于他人!