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 array_flip() 删除重复数组元素专用函数
May 16 PHP
克隆一个新项目的快捷方式
Apr 10 PHP
如何使用PHP计算上一个月的今天
May 23 PHP
php实现文本数据导入SQL SERVER
May 17 PHP
功能强大的PHP图片处理类(水印、透明度、旋转)
Oct 21 PHP
php+ajax实现无刷新的新闻留言系统
Dec 21 PHP
php fread读取文件注意事项
Sep 24 PHP
php分页查询mysql结果的base64处理方法示例
May 18 PHP
PHP读取并输出XML文件数据的简单实现方法
Dec 22 PHP
PHP获取链表中倒数第K个节点的方法
Jan 18 PHP
php的扩展写法总结
May 14 PHP
Mac下关于PHP环境和扩展的安装详解
Oct 17 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
ThinkPHP模板判断输出Empty标签用法详解
2014/06/30 PHP
PHP新特性详解之命名空间、性状与生成器
2017/07/18 PHP
php单元测试phpunit入门实例教程
2017/11/17 PHP
学习javascript,实现插入排序实现代码
2011/07/31 Javascript
Three.js源码阅读笔记(物体是如何组织的)
2012/12/27 Javascript
JS特权方法定义作用以及与公有方法的区别
2013/03/18 Javascript
jquery移除、绑定、触发元素事件使用示例详解
2014/04/10 Javascript
javascript实现html页面之间参数传递的四种方法实例分析
2015/12/15 Javascript
jQuery基于BootStrap样式实现无限极地区联动
2016/08/26 Javascript
浅谈JS使用[ ]来访问对象属性
2016/09/21 Javascript
JS中的phototype详解
2017/02/04 Javascript
jQuery快速实现商品数量加减的方法
2017/02/06 Javascript
jQuery中 bind的用法简单介绍
2017/02/13 Javascript
纯JS实现轮播图
2017/02/22 Javascript
微信小程序遇到修改数据后页面不渲染的问题解决
2017/03/09 Javascript
详解使用angular的HttpClient搭配rxjs
2017/09/01 Javascript
js input输入百分号保存数据库失败的解决方法
2018/05/26 Javascript
详解vue-cli3多环境打包配置
2019/03/28 Javascript
[02:09:59]火猫TV国士无双dota2 6.82版本详解(下)
2014/09/29 DOTA
跟老齐学Python之Python安装
2014/09/12 Python
pymongo实现控制mongodb中数字字段做加法的方法
2015/03/26 Python
python3序列化与反序列化用法实例
2015/05/26 Python
Python socket网络编程TCP/IP服务器与客户端通信
2017/01/05 Python
简单了解Python中的几种函数
2017/11/03 Python
Python Json数据文件操作原理解析
2020/05/09 Python
Python是怎样处理json模块的
2020/07/16 Python
python爬虫快速响应服务器的做法
2020/11/24 Python
Django如何继承AbstractUser扩展字段
2020/11/27 Python
Bluebella德国官网:英国性感内衣和睡衣品牌
2019/11/08 全球购物
应届大学生求职的自我评价
2013/11/17 职场文书
关于赌博的检讨书
2014/01/08 职场文书
会计求职信
2014/05/29 职场文书
领导班子党的群众路线教育实践活动对照检查材料
2014/09/25 职场文书
医院营销工作计划
2015/01/16 职场文书
教师岗位职责范本
2015/04/02 职场文书
nginx location优先级的深入讲解
2021/03/31 Servers