通过.htaccess重定向AJAX查询
我有一个.htaccess文件:通过.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时,它也会重定向
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我认为使用字节加密和小洗牌功能将足以删除大量未等待的来宾。这将使事情变得更加困难,但脚本仍然可以访问。这取决于你想做得有多努力。