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 相关文章推荐
1.PHP简介
Oct 09 PHP
收集的DedeCMS一些使用经验
Mar 17 PHP
PHP 多维数组排序(usort,uasort)
Jun 30 PHP
解析php取整的几种方式
Jun 25 PHP
在PHP中使用X-SendFile头让文件下载更快
Jun 01 PHP
phpstorm编辑器乱码问题解决
Dec 01 PHP
php实现读取内存顺序号
Mar 29 PHP
PHP保存session到memcache服务器的方法
Jan 19 PHP
Yii框架实现的验证码、登录及退出功能示例
May 20 PHP
PHP实现执行外部程序的方法详解
Aug 17 PHP
laravel 获取当前url的别名方法
Oct 11 PHP
对laravel的csrf 防御机制详解,及form中csrf_token()的存在介绍
Oct 24 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
关于mysql 字段的那个点为是定界符
2007/01/15 PHP
需要使用php模板的朋友必看的很多个顶级PHP模板引擎比较分析
2008/05/26 PHP
PHP临时文件的安全性分析
2014/07/04 PHP
[原创]PHP实现逐行删除文件右侧空格的方法
2015/12/25 PHP
使用ltrace工具跟踪PHP库函数调用的方法
2016/04/25 PHP
php无限级分类实现方法分析
2016/10/19 PHP
PHP获取表单数据与HTML嵌入PHP脚本的实现
2017/02/09 PHP
thinkPHP5.0框架安装教程
2017/03/25 PHP
IE与FireFox的兼容性问题分析
2007/04/22 Javascript
javascript 读取图片文件的大小
2009/06/25 Javascript
jquery $.ajax()取xml数据的小问题解决方法
2010/11/20 Javascript
javascript 闭包疑问
2010/12/30 Javascript
JQuery为textarea添加maxlength属性并且兼容IE
2013/04/25 Javascript
jquery缓动swing liner控制动画过程不同时刻的速度
2014/05/29 Javascript
javascript实现checkBox的全选,反选与赋值
2015/03/12 Javascript
javascript比较两个日期相差天数的方法
2015/07/24 Javascript
基于Jquery+div+css实现弹出登录窗口(代码超简单)
2015/10/27 Javascript
Javascript中字符串replace方法的第二个参数探究
2016/12/05 Javascript
jQuey将序列化对象在前台显示地实现代码(方法总结)
2016/12/13 Javascript
Angular的$http与$location
2016/12/26 Javascript
AngularJS实现动态添加Option的方法
2017/05/17 Javascript
echarts整合多个类似option的方法实例
2018/07/10 Javascript
微信小程序实现折线图的示例代码
2019/06/07 Javascript
VUE 自定义组件模板的方法详解
2019/08/30 Javascript
Vue 实现把表单form数据 转化成json格式的数据
2019/10/29 Javascript
小程序瀑布流组件实现翻页与图片懒加载
2020/05/19 Javascript
vue下拉刷新组件的开发及slot的使用详解
2020/12/23 Vue.js
requests和lxml实现爬虫的方法
2017/06/11 Python
Flask解决跨域的问题示例代码
2018/02/12 Python
Python音频操作工具PyAudio上手教程详解
2019/06/26 Python
Python学习笔记之字符串和字符串方法实例详解
2019/08/22 Python
Python基于内置库pytesseract实现图片验证码识别功能
2020/02/24 Python
大学生党员承诺书
2014/05/20 职场文书
2015年项目经理工作总结
2015/04/30 职场文书
新学期开学寄语2016
2015/12/04 职场文书
position:sticky 粘性定位的几种巧妙应用详解
2021/04/24 HTML / CSS