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

时间:2013-07-18 12:43:38

标签: php html ajax apache .htaccess

我有一个带有域的Wordpress网站:Hello.com,这是“ajaxified”。 我想知道的是,如果用户使用浏览器地址栏访问Hello.comHello.com/ask或更深层次的内容,如何将用户重定向回Hello.com/cake

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

我正在使用Wordpress,我的第一个想法就是将重定向脚本放在标题上,但最终会产生一个无限重定向循环。

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

  

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

1 个答案:

答案 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

希望这有助于其他人!