Php 停止直接访问(.htaccess)并允许对子文件夹进行ajax请求
我试图停止直接访问子目录和子目录中的php文件。我已经将下面的代码添加到子目录中的.htaccess文件中,但是现在AJAX请求不起作用 如何停止访问www.example.com/subdir,但允许jQuery load和ajax函数工作Php 停止直接访问(.htaccess)并允许对子文件夹进行ajax请求,php,jquery,ajax,.htaccess,redirect,Php,Jquery,Ajax,.htaccess,Redirect,我试图停止直接访问子目录和子目录中的php文件。我已经将下面的代码添加到子目录中的.htaccess文件中,但是现在AJAX请求不起作用 如何停止访问www.example.com/subdir,但允许jQuery load和ajax函数工作 Options -Indexes order allow,deny deny from all 谢谢如果您的ajax函数访问该文件夹中的某个文件,您不能。因为AJAX是从客户端浏览器发送的请求。将此代码放入您的文档\u ROOT/.htacce
Options -Indexes
order allow,deny
deny from all
谢谢如果您的ajax函数访问该文件夹中的某个文件,您不能。因为AJAX是从客户端浏览器发送的请求。将此代码放入您的
文档\u ROOT/.htaccess
文件:
RewriteEngine On
## disable direct access (but allow internal or AJAX requests)
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain\.com/ [NC]
RewriteRule ^subdir(/|$) - [F,NC]
用您自己的域名替换www.domain.com
请注意,这使用
%{HTTP\u REFERER}
头来执行此阻止,并且可以操纵此头值。您可以使用mod\u rewrite来限制对目录中所有特定文件的访问。将其添加到该目录中的.htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !(jsonp)|(ws)|(ajax)
RewriteRule .* - [R=404,L]
只需将jsonp ws-ajax替换为您的文件名。我会将apache指令放在一边,也许会专注于基于php的解决方案:
和
标记中
(php标记即使包含在“脚本”标记中也会运行)
…你完了
当然,您可以(或者更好:应该)重命名会话并给它们不同或更复杂的值,但我只是想指出基本思想…快乐编码!我找到了使用会话的最简单解决方案
- 项目文件夹
- index.php
- 副处长
- db_config.php
$sess = session_start();
$_SESSION["nuclear_weapon_key"] = "lolva";
现在转到sub_dir->opendb_config.php
将此选项添加到页面顶部:
$sess = session_start();
if(isset($_SESSION['nuclear_weapon_key']) && $_SESSION['nuclear_weapon_key'] === "lolva"){ } else{ echo "LOL"; die();}
对任何包含文件的ajax/jquery重复此操作
这对我很有用。当你说“操纵这个头值”时,请你详细说明一下好吗?这意味着客户端可以在
%{HTTP\u REFERER}heade
$sess = session_start();
if(isset($_SESSION['nuclear_weapon_key']) && $_SESSION['nuclear_weapon_key'] === "lolva"){ } else{ echo "LOL"; die();}