Apache下禁止php文件被直接访问的解决方案


Posted in PHP onApril 25, 2013

一开始,我想在重写规则里直接禁止php后缀的URL被访问。但后来发现重写规则是递归调用的,如果在重写规则里直接禁止php,那么重写到php文件的规则也会失效。RewriteEngineOn

RewriteRule^test$/test.php[L] 

RewriteRule^test.php$$0[F,L]
Apache下禁止php文件被直接访问的解决方案

递归调用这真可怕,一开始访问/test的时候URL重写检查一次,然后匹配到^test$就内部重定向到/test.php,然而内部重定向也会触发URL重写,因此再次检查,匹配到^test.php$,被强制直接[F](Forbidden)操作,所以就变成了403错误。既然这样,就必须判是否已经经过服务器重定向。这时候服务器变量里有个REDIRECT_URL可以使用,因此我试着用这个做判断。

RewriteEngineOn 

RewriteRule^test$/test.php[L] 

RewriteCond%{REDIRECT_URL}^$

RewriteRule.*$0[F,L]这样写访问/test依旧被403,稍微检查下,发现RewriteCond中%{REDIRECT_URL}永远为空,这就蛋疼了,这样的话在重写规则中没办法直接禁止php了。但是可以用不怎么华丽的方法实现。就是在php文件中去判断REDIRECT_URL,虽然这个方法可以实现,但是感觉很逊,只是目前为止也没找到什么更好的办法了。

$_SERVER['REDIRECT_URL']ordie('Forbidden'); 

//这里只是显示文字而已,实际使用的时候还需输出的HTTP错误代码。 

echo$_SERVER['REDIRECT_URL'];//成功访问显示信息 

?>
Apache下禁止php文件被直接访问的解决方案

把这段PHP代码修改下丢进全局引用里就基本上没啥问题了,虽然不是完美解决,但是至少还是解决了,以后也许会发现更好的方法。

PHP 相关文章推荐
php 字符串函数收集
Mar 29 PHP
不重新编译PHP为php增加openssl模块的方法
Jun 14 PHP
PHP中如何调用webservice的实例参考
Apr 25 PHP
一个PHP的远程图片抓取函数分享
Sep 25 PHP
Yii框架form表单用法实例
Dec 04 PHP
smarty循环嵌套用法示例分析
Jul 19 PHP
PHP数组生成XML格式数据的封装类实例
Nov 10 PHP
php 如何禁用eval() 函数实例详解
Dec 01 PHP
PHP如何根据文件头检测文件类型实例代码
Oct 14 PHP
PHP框架实现WebSocket在线聊天通讯系统
Nov 21 PHP
PHPExcel实现的读取多工作表操作示例
Apr 14 PHP
如何在Laravel之外使用illuminate组件详解
Sep 20 PHP
PHP笔记之:日期函数的使用介绍
Apr 24 #PHP
php笔记之:AOP的应用
Apr 24 #PHP
php class中self,parent,this的区别以及实例介绍
Apr 24 #PHP
PHP中::、->、self、$this几种操作符的区别介绍
Apr 24 #PHP
php判断终端是手机还是电脑访问网站的思路及代码
Apr 24 #PHP
用PHP提取中英文词语以及数字的首字母的方法介绍
Apr 23 #PHP
基于PHP读取TXT文件向数据库导入海量数据的方法
Apr 23 #PHP
You might like
PHP实现的下载远程图片自定义函数分享
2015/01/28 PHP
laravel添加前台跳转成功页面示例
2019/10/22 PHP
laravel 实现用户登录注销并限制功能
2019/10/24 PHP
解决php扩展安装不生效问题
2019/10/25 PHP
PHP的垃圾回收机制代码实例讲解
2021/02/27 PHP
读jQuery之三(构建选择器)
2011/06/11 Javascript
js图片闪动特效可以控制间隔时间如几分钟闪动一下
2014/08/12 Javascript
JavaScript中双叹号!!作用示例介绍
2014/09/21 Javascript
jQuery基础知识小结
2014/12/22 Javascript
javascript实现根据iphone屏幕方向调用不同样式表的方法
2015/07/13 Javascript
JavaScript仿支付宝密码输入框
2015/12/29 Javascript
JS实现点击事件统计的简单实例
2016/07/10 Javascript
javascript中href和replace的比较(详解)
2016/11/25 Javascript
Angular中的$watch方法详解
2017/09/18 Javascript
浅谈如何通过node.js对数据进行MD5加密
2018/05/16 Javascript
vue和webpack打包项目相对路径修改的方法
2018/06/15 Javascript
jQuery md5加密插件jQuery.md5.js用法示例
2018/08/24 jQuery
微信小程序实现顶部导航特效
2019/01/28 Javascript
微信小程序实现电子签名并导出图片
2020/05/27 Javascript
vue修改Element的el-table样式的4种方法
2020/09/17 Javascript
[02:27]《DAC最前线》之附加赛征程
2015/01/29 DOTA
Python中的heapq模块源码详析
2019/01/08 Python
python查询文件夹下excel的sheet名代码实例
2019/04/02 Python
基于Python实现签到脚本过程解析
2019/10/25 Python
Python二次规划和线性规划使用实例
2019/12/09 Python
基于Python获取照片的GPS位置信息
2020/01/20 Python
Python实现加密的RAR文件解压的方法(密码已知)
2020/09/11 Python
Alpine安装Python3依赖出现的问题及解决方法
2020/12/25 Python
Python tkinter之Bind(绑定事件)的使用示例
2021/02/05 Python
世界上最大的在线旅行社新加坡网站:Expedia新加坡
2016/08/25 全球购物
Under Armour安德玛中国官网:美国高端运动科技品牌
2018/03/09 全球购物
公司合作协议书范本
2014/04/18 职场文书
综合实践活动报告
2015/02/05 职场文书
自我工作评价范文
2015/03/06 职场文书
2016年春季运动会广播稿
2015/08/19 职场文书
PO模式在selenium自动化测试框架的优势
2022/03/20 Python