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 相关文章推荐
PHP5/ZendEngine2的改进
Oct 09 PHP
3种平台下安装php4经验点滴
Oct 09 PHP
PHP与javascript的两种交互方式
Oct 09 PHP
让PHP支持页面回退的两种方法
Jan 10 PHP
php MySQL与分页效率
Jun 04 PHP
PHP开发中的错误收集,不定期更新。
Feb 03 PHP
web server使用php生成web页面的三种方法总结
Oct 28 PHP
php 模拟 asp.net webFrom 按钮提交事件实例
Oct 13 PHP
php从memcache读取数据再批量写入mysql的方法
Dec 29 PHP
php实现异步数据调用的方法
Dec 24 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式二图文详解
Apr 09 PHP
PHP7使用ODBC连接SQL Server2008 R2数据库示例【基于thinkPHP5.1框架】
May 06 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
超强分页类2.0发布,支持自定义风格,默认4种显示模式
2007/01/02 PHP
php在服务器执行exec命令失败的解决方法
2012/03/03 PHP
检查php文件中是否含有bom的函数
2012/05/31 PHP
关于使用coreseek并为其做分页的介绍
2013/06/21 PHP
php访问数组最后一个元素的函数end()用法
2015/03/18 PHP
基于PHP常用文件函数和目录函数整理
2017/08/17 PHP
脚本安需导入(装载)的三种模式的对比
2007/06/24 Javascript
Jquery颜色选择器ColorPicker实现代码
2012/11/14 Javascript
nullJavascript中创建对象的五种方法实例
2013/05/07 Javascript
javaScript NameSpace 简单说明介绍
2013/07/18 Javascript
JavaScript中实现继承的三种方式和实例
2015/01/29 Javascript
input框中的name和id的区别
2016/11/16 Javascript
Vue组件通信中非父子组件传值知识点总结
2019/12/05 Javascript
小程序卡片切换效果组件wxCardSwiper的实现
2020/02/13 Javascript
微信小程序实现拨打电话功能的示例代码
2020/06/28 Javascript
[34:10]Secret vs VG 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.24
2019/09/10 DOTA
用xpath获取指定标签下的所有text的实例
2019/01/02 Python
解决python中导入win32com.client出错的问题
2019/07/26 Python
python如何通过闭包实现计算器的功能
2020/02/22 Python
一些关于python 装饰器的个人理解
2020/08/31 Python
如何通过python实现IOU计算代码实例
2020/11/02 Python
35款精致的 CSS3 和 HTML5 网页模板 推荐
2012/08/03 HTML / CSS
实例教程 一款纯css3实现的数字统计游戏
2014/11/10 HTML / CSS
俄罗斯在线手表和珠宝商店:AllTime
2019/09/28 全球购物
俄罗斯三星品牌商店:Samsungstore
2020/04/05 全球购物
运动会广播稿300字
2014/01/10 职场文书
金融行业职业生涯规划范文
2014/01/17 职场文书
小学生演讲稿大全
2014/04/25 职场文书
测绘工程专业求职信
2014/07/15 职场文书
优秀中职教师事迹材料
2014/08/26 职场文书
思想纪律作风整顿剖析材料
2014/10/11 职场文书
个人委托函范文
2015/01/29 职场文书
寻找最美乡村教师观后感
2015/06/18 职场文书
2016年寒假见闻
2015/10/10 职场文书
python使用pygame创建精灵Sprite
2021/04/06 Python
python 如何在list中找Topk的数值和索引
2021/05/20 Python