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中长文章分页显示实现代码
Sep 29 PHP
PHP过滤黑名单关键字的方法
Dec 01 PHP
Laravel 5 框架入门(三)
Apr 09 PHP
php实现用手机关闭计算机(电脑)的方法
Apr 22 PHP
详解php的socket通信
Aug 11 PHP
PHP6连接SQLServer2005的三部曲
Apr 15 PHP
浅谈PHP正则中的捕获组与非捕获组
Jul 18 PHP
PHP实现阿里大鱼短信验证的实例代码
Jul 10 PHP
php 删除指定文件夹的实例讲解
Jul 25 PHP
php实现mysql连接池效果实现代码
Jan 25 PHP
bindParam和bindValue的区别以及在Yii2中的使用详解
Mar 12 PHP
浅析PHP7 的垃圾回收机制
Sep 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
AM/FM收音机的安装与调试
2021/03/02 无线电
深入解析Session是否必须依赖Cookie
2013/08/02 PHP
CI框架扩展系统核心类的方法分析
2016/05/23 PHP
Yii框架参数配置文件params用法实例分析
2019/09/11 PHP
js自带函数备忘 数组
2006/12/29 Javascript
jquery api参考 visualjquery 中国线路 速度快
2007/11/30 Javascript
最近项目写了一些js,水平有待提高
2009/01/31 Javascript
解析javascript 实用函数的使用详解
2013/05/10 Javascript
用JavaScript计算在UTF-8下存储字符串占用字节数
2013/08/08 Javascript
String.prototype实现的一些javascript函数介绍
2013/11/22 Javascript
jquery新的绑定事件机制on方法的使用方法
2014/04/15 Javascript
Javascript基础教程之数据类型 (数值 Number)
2015/01/18 Javascript
在JavaScript中操作时间之setYear()方法的使用
2015/06/12 Javascript
javascript中Date()函数在各浏览器中的显示效果
2015/06/18 Javascript
JS组件Bootstrap导航条使用方法详解
2016/04/29 Javascript
JavaScript的Backbone.js框架入门学习指引
2016/05/07 Javascript
浅谈jQuery中hide和fadeOut的区别 show和fadeIn的区别
2016/08/18 Javascript
浅谈Javascript中的函数、this以及原型
2016/10/09 Javascript
使用Angular 6创建各种动画效果的方法
2018/10/10 Javascript
vue-cli3 项目优化之通过 node 自动生成组件模板 generate View、Component
2019/04/30 Javascript
30分钟用Node.js构建一个API服务器的步骤详解
2019/05/24 Javascript
简述pm2常用命令集合及配置文件说明
2019/05/30 Javascript
小程序如何定位所在城市及发起周边搜索
2020/02/11 Javascript
Vue中避免滥用this去读取data中数据
2021/03/02 Vue.js
Python数据分析库pandas基本操作方法
2018/04/08 Python
使用tensorflow实现线性回归
2018/09/08 Python
pandas 对group进行聚合的例子
2019/12/27 Python
CSS3属性box-sizing使用指南
2014/12/09 HTML / CSS
美国专营婴幼儿用品的购物网站:buybuy BABY
2017/01/01 全球购物
美国最大的万圣节服装网站:HalloweenCostumes.com
2017/10/12 全球购物
加拿大著名的奢侈品购物网站:SSENSE(支持中文)
2020/06/25 全球购物
电子商务专业自我鉴定
2013/12/18 职场文书
实习护士自荐信
2014/06/21 职场文书
人身损害赔偿协议书范本
2014/09/27 职场文书
结婚保证书(三从四德)
2015/02/26 职场文书
nginx的zabbix 5.0安装部署的方法步骤
2021/07/16 Servers