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 相关文章推荐
MySQL相关说明
Jan 15 PHP
PHP的substr_replace将指定两位置之间的字符替换为*号
May 04 PHP
php 获取SWF动画截图示例代码
Feb 10 PHP
学习php中的正则表达式
Aug 17 PHP
PHP图片自动裁切应付不同尺寸的显示
Oct 16 PHP
php字符串分割函数用法实例
Mar 17 PHP
PHP简单实现DES加密解密的方法
Jul 12 PHP
php微信开发之百度天气预报
Nov 18 PHP
如何用PHP做到页面注册审核
Mar 02 PHP
PHP面向对象程序设计之接口的继承定义与用法详解
Dec 20 PHP
ThinkPHP 5.x远程命令执行漏洞复现
Sep 23 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
Dec 25 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
我的论坛源代码(八)
2006/10/09 PHP
PHP进程同步代码实例
2015/02/12 PHP
在Mac OS上搭建Nginx+PHP+MySQL开发环境的教程
2015/12/21 PHP
yii2带搜索功能的下拉框实例详解
2016/05/12 PHP
laravel接管Dingo-api和默认的错误处理方式
2019/10/25 PHP
点击广告后才能获得下载地址
2006/10/26 Javascript
js和as的稳定传值问题解决
2013/07/14 Javascript
JavaScript作用域链示例分享
2014/05/27 Javascript
详解angularJs指令的3种绑定策略
2017/04/13 Javascript
nodejs中解决异步嵌套循环和循环嵌套异步的问题
2017/07/12 NodeJs
ionic3+Angular4实现接口请求及本地json文件读取示例
2017/10/11 Javascript
微信小程序自定义组件的实现方法及自定义组件与页面间的数据传递问题
2018/10/09 Javascript
浅谈Vue.js组件(二)
2019/04/09 Javascript
nodejs一个简单的文件服务器的创建方法
2019/09/13 NodeJs
vue中选中多个选项并且改变选中的样式的实例代码
2020/09/16 Javascript
vue 获取url参数、get参数返回数组的操作
2020/11/12 Javascript
Python中获取对象信息的方法
2015/04/27 Python
python函数局部变量用法实例分析
2015/08/04 Python
完美解决Python2操作中文名文件乱码的问题
2017/01/04 Python
python实现发送邮件功能
2017/07/22 Python
python实现二叉查找树实例代码
2018/02/08 Python
Python聊天室程序(基础版)
2018/04/01 Python
Python中Flask-RESTful编写API接口(小白入门)
2019/12/11 Python
Python集合操作方法详解
2020/02/09 Python
Python使用struct处理二进制(pack和unpack用法)
2020/11/12 Python
Python爬虫之Selenium实现关闭浏览器
2020/12/04 Python
基于HTML5 Canvas 实现商场监控实例详解
2017/11/20 HTML / CSS
为娇小女性量身打造:Petite Studio
2018/11/01 全球购物
万户网络JAVA程序员岗位招聘笔试试卷
2013/01/08 面试题
给同事的道歉信
2014/01/11 职场文书
《微笑着面对生活》优秀演讲稿范文
2014/09/23 职场文书
学校食堂食品安全承诺书
2015/04/29 职场文书
同学聚会感言一句话
2015/07/30 职场文书
公司出差管理制度范本
2015/08/05 职场文书
叶县这家生产军用电台的兵工厂,人称“四机部”,走出一上将
2022/02/18 无线电
mysql查询结果实现多列拼接查询
2022/04/03 MySQL