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录入页面中动态从数据库中提取数据的实现
Oct 09 PHP
ob_start(),ob_start('ob_gzhandler')使用
Dec 25 PHP
简单的php 验证图片生成函数
May 21 PHP
PHP学习之数组的定义和填充
Apr 17 PHP
关于IIS php调用com组件的权限问题
Jan 11 PHP
请离开include_once和require_once
Jul 18 PHP
php 修改、增加xml结点属性的实现代码
Oct 22 PHP
codeigniter中测试通过的分页类示例
Apr 17 PHP
php获取一定范围内取N个不重复的随机数
May 28 PHP
php将服务端的文件读出来显示在web页面实例
Oct 31 PHP
PHP实现git部署的方法教程
Dec 19 PHP
PHP7 foreach() 函数修改
Mar 09 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
根德Grundig S400/S500/S700电路分析
2021/03/02 无线电
在smarty模板中使用PHP函数的方法
2011/04/23 PHP
linux命令之调试工具strace的深入分析
2013/06/03 PHP
php生成EAN_13标准条形码实例
2013/11/13 PHP
JS定时器实例
2013/04/17 Javascript
如何使用jQuery技术开发ios风格的页面导航菜单
2015/07/29 Javascript
js+html5操作sqlite数据库的方法
2016/02/02 Javascript
JavaScript数组操作函数汇总
2016/08/05 Javascript
Windows系统下安装Node.js的步骤图文详解
2016/11/15 Javascript
Ajax异步获取html数据中包含js方法无效的解决方法
2017/02/20 Javascript
BootStrap表单时间选择器详解
2017/05/09 Javascript
详解Node.js开发中的express-session
2017/05/19 Javascript
微信禁止下拉查看URL的处理方法
2017/09/28 Javascript
AngularJS实现图片上传和预览功能的方法分析
2017/11/08 Javascript
vue-cli 打包后提交到线上出现 "Uncaught SyntaxError:Unexpected token" 报错
2018/11/06 Javascript
angular中如何绑定iframe中src的方法
2019/02/01 Javascript
使用jquery-easyui的布局layout写后台管理页面的代码详解
2019/06/19 jQuery
微信小程序获取公众号文章列表及显示文章的示例代码
2020/03/10 Javascript
python单例模式实例分析
2015/04/08 Python
利用Python读取文件的四种不同方法比对
2017/05/18 Python
Python3多线程操作简单示例
2018/05/22 Python
CentOS6.9 Python环境配置(python2.7、pip、virtualenv)
2019/05/06 Python
Python实现朴素贝叶斯的学习与分类过程解析
2019/08/24 Python
使用python绘制二维图形示例
2019/11/22 Python
数据库面试要点基本概念
2013/10/31 面试题
信息技术专业大学生个人的自我评价
2013/10/05 职场文书
电子装配专业毕业生求职信
2014/04/23 职场文书
实习护士自荐信
2014/06/21 职场文书
不听老师话的万能检讨书
2014/10/04 职场文书
辅导员学期工作总结
2015/08/14 职场文书
微信小程序用户授权最佳实践指南
2021/05/08 Javascript
opencv 分类白天与夜景视频的方法
2021/06/05 Python
Java实现简易的分词器功能
2021/06/15 Java/Android
MySQL表锁、行锁、排它锁及共享锁的使用详解
2022/04/02 MySQL
Java字符缓冲流BufferedWriter
2022/04/09 Java/Android
Echarts如何重新渲染实例详解
2022/05/30 Javascript