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 相关文章推荐
dede全站URL静态化改造[070414更正]
Apr 17 PHP
php.ini中的php-5.2.0配置指令详解
Mar 27 PHP
PHP中查询SQL Server或Sybase时TEXT字段被截断的解决方法
Mar 10 PHP
snoopy 强大的PHP采集类使用实例代码
Dec 09 PHP
PHP漏洞全解(详细介绍)
Nov 13 PHP
php连接Access数据库错误及解决方法
Jun 20 PHP
php选择排序法实现数组排序实例分析
Feb 16 PHP
再Docker中架设完整的WordPress站点全攻略
Jul 29 PHP
Yii遍历行下每列数据的方法
Oct 17 PHP
几行代码轻松实现PHP文件打包下载zip
Mar 01 PHP
PHP新特性详解之命名空间、性状与生成器
Jul 18 PHP
thinkPHP5.1框架中Request类四种调用方式示例
Aug 03 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
全国FM电台频率大全 - 15 山东省
2020/03/11 无线电
php中函数的形参与实参的问题说明
2010/09/01 PHP
php格式化日期实例分析
2014/11/12 PHP
PHP开发中csrf攻击的简单演示和防范
2017/05/07 PHP
Prototype Hash对象 学习
2009/07/19 Javascript
jquery 插件开发备注
2010/08/27 Javascript
js showModalDialog 弹出对话框的简单实例(子窗体)
2014/01/07 Javascript
jquery仿百度百科底部浮动导航特效
2015/08/08 Javascript
js仿微博实现统计字符和本地存储功能
2015/12/22 Javascript
Bootstrap下拉菜单效果实例代码分享
2016/06/30 Javascript
AngularJS包括详解及示例代码
2016/08/17 Javascript
微信小程序 条件渲染详解
2016/10/09 Javascript
AngularJS自定义插件实现网站用户引导功能示例
2016/11/07 Javascript
微信小程序之ES6与事项助手的功能实现
2016/11/30 Javascript
使用原生的javascript来实现轮播图
2017/02/24 Javascript
js 转义字符及URI编码详解
2017/02/28 Javascript
vue项目前端埋点的实现
2019/03/06 Javascript
微信小程序实现张图片合成为一张并下载
2019/07/16 Javascript
如何在JavaScript中等分数组的实现
2020/12/13 Javascript
python解析json串与正则匹配对比方法
2018/12/20 Python
Python实现的读取文件内容并写入其他文件操作示例
2019/04/09 Python
基于django channel实现websocket的聊天室的方法示例
2019/04/11 Python
详解python执行shell脚本创建用户及相关操作
2019/04/11 Python
Python实现一个带权无回置随机抽选函数的方法
2019/07/24 Python
Python实现图像的垂直投影示例
2020/01/17 Python
让IE可以变相支持CSS3选择器
2010/01/21 HTML / CSS
css3 实现元素弧线运动的示例代码
2020/04/24 HTML / CSS
在C#中如何实现多态
2014/07/02 面试题
汽车专业毕业生推荐信
2013/11/12 职场文书
初一地理教学反思
2014/01/16 职场文书
十佳班主任事迹材料
2014/01/18 职场文书
经理助理岗位职责
2014/03/05 职场文书
小学生家长寄语
2014/04/02 职场文书
精神文明建设汇报材料
2014/12/24 职场文书
CSS 伪元素::marker详解
2021/06/26 HTML / CSS
Python集合set()使用的方法详解
2022/03/18 Python