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

未通过ajax请求URL时的PHP重定向(在wordpress页面上时),php,html,ajax,apache,.htaccess,Php,Html,Ajax,Apache,.htaccess,我有一个Wordpress网站,域名是:Hello.com,它是“ajaxified”。 我想知道的是,如果用户访问Hello.com/ask、Hello.com/cake或使用浏览器地址栏访问更深的内容,如何将用户重定向回Hello.com 即使他们深入了2度,比如Hello.com/cake/make,我希望他们留在我网站的根目录下 我正在使用Wordpress,我的第一个想法是将重定向脚本放在标题处,但最终生成了一个无限重定向循环 如何将用户重定向到主页而不将ajax请求重定向到主页 [如

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

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

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

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

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


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

if(strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest')
它允许我通过PHP检查它是否通过Ajax

当请求是ajax请求时,
$\u服务器['HTTP\u X\u REQUESTED\u WITH']
的值为
xmlhttprequest

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

if(strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {
    header("Location: http://". $_SERVER['HTTP_HOST']."/");
}
它将检查请求是否是通过ajax完成的,如果不是,则重定向到网站/web应用程序的主页/主屏幕

我读了之后有了这个想法


注意:使用HTTP\u X\u REQUESTED\u取决于您正在使用的JavaScript框架(如果它设置了该标头)。我正在使用jQuery,它可以为您完成这项工作。 另外$\u服务器并不完全是PHP的一部分,因此它还取决于您的服务器是否将该变量传递给PHP。 如果您使用的是Nginx服务器,但它不适合您,您可以尝试以下方法:


希望这能帮助别人

查看htacess,它可能是管理员界面或其他类型的web应用程序,SE不应该搜索。@Stefan这就是robots.txt的用途。@user2128576 htacess也有排除规则。据我所知,在Htaces中使用重写规则是最省力的。否则,您可以使用多种方法之一将重定向放入每个index.xyz页面:元刷新、javascript window.location、php Header('location:')等。然后通过ajax重命名加载的页面,使其不命名为index.xyz