Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过.htaccess重定向AJAX查询_Ajax_.htaccess_Redirect - Fatal编程技术网

通过.htaccess重定向AJAX查询

通过.htaccess重定向AJAX查询,ajax,.htaccess,redirect,Ajax,.htaccess,Redirect,我有一个.htaccess文件: RewriteEngine On DirectoryIndex control.php Options +FollowSymlinks RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule (.+) controller.php?do=$1 [L] 这将重定向所有查询并设置干净的URL。但当我使用ajax时,它也会重定向

我有一个.htaccess文件:

RewriteEngine On
DirectoryIndex control.php
Options +FollowSymlinks
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.+) controller.php?do=$1 [L]
这将重定向所有查询并设置干净的URL。但当我使用ajax时,它也会重定向。是否可以过滤ajax查询并重定向到

controller-ajax.php?do=$1 [L]
相反


我试图在controller.php中捕获它,但是
X\u请求的
不存在。最好的办法是将所有ajax请求重定向到另一个脚本,而不是进行额外的脚本检查。

调用ajax时,向查询添加一个GET变量(即在查询末尾添加
?ajax=true
)。然后将其保存在.htaccess中:

RewriteEngine On
DirectoryIndex control.php
Options +FollowSymlinks
RewriteBase /

RewriteCond %{REQUEST_FILENAME} -f {OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .* - [L]

RewriteCond %{QUERY_STRING} ajax.true
RewriteRule (.+) controller-ajax.php?do=$1 [L]

RewriteRule (.+) controller.php?do=$1 [L]

有没有一种方法可以使AJAX查询不同于其他类型的查询?也许可以添加一个GET变量,比如
?ajax=true
?感谢您的回答。但也可以通过将此变量添加到简单的http查询来调用脚本,您将被传递,js函数对于获取此变量并不难。请提供一些想法,我尝试在大约几个星期内修复它。但它有任何防御措施吗?我还可以通过网络活动查看我查询的位置和内容,只需添加到简单链接?ajax=true和ill-get脚本,我想保护它,也许通过标题可以避免它?您可以尝试检查此变量吗<代码>$\u服务器['HTTP\u X\u REQUESTED\u WITH']
(应该是'XMLHttpRequest')-有些服务器发送,有些服务器不发送。我还没意识到你在试图保护脚本文件。我会说,虽然你不能100%地保护它,但考虑到AJAX是一个客户端请求,足够聪明的人总是可以模仿这样的请求不存在oO我认为使用字节加密和小洗牌功能将足以删除大量未等待的来宾。这将使事情变得更加困难,但脚本仍然可以访问。这取决于你想做得有多努力。