2

我有一个带有域的 Wordpress 网站:Hello.com它是“ajaxified”。我想知道的是如何将用户重定向回Hello.com如果他们访问Hello.com/askHello.com/cake或者使用浏览器地址栏进行更深入的操作。

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

我正在使用 Wordpress,我的第一个想法是将重定向脚本放在标题中,但最终导致了无限重定向循环。

如何将用户重定向到主页而不将我的 ajax 请求也重定向到主页?

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

4

1 回答 1

6

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

if(strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest')

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

的值$_SERVER['HTTP_X_REQUESTED_WITH']xmlhttprequest请求是 ajax 请求时的值。

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

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 服务器上并且它不适合你,你可以试试这个: Passing HTTP_X_REQUESTED_WITH from nginx to php

希望这对其他人有帮助!

于 2013-07-18T15:16:55.933 回答