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 10 PHP
PHP 批量更新网页内容实现代码
Jan 05 PHP
PHP计划任务、定时执行任务的实现代码
Apr 23 PHP
用PHP实现的四则运算表达式计算实现代码
Aug 02 PHP
shopex主机报错误请求解决方案(No such file or directory)
Dec 27 PHP
PHP的博客ping服务代码
Feb 04 PHP
php调用方法mssql_fetch_row、mssql_fetch_array、mssql_fetch_assoc和mssql_fetch_objcect读取数据的区别
Aug 08 PHP
PHP调用Linux的命令行执行文件压缩命令
Jan 27 PHP
PHP实现简单实用的分页类代码
Apr 08 PHP
删除PHP数组中的重复元素的实现代码
Apr 10 PHP
Ajax+PHP实现的删除数据功能示例
Feb 12 PHP
Laravel5.5 实现后台管理登录的方法(自定义用户表登录)
Sep 30 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
Home Coffee Roasting
2021/03/03 咖啡文化
PHP遍历二维数组的代码
2011/04/22 PHP
php cookie用户登录的详解及实例代码
2017/01/03 PHP
javascript 强制刷新页面的实现代码
2009/12/13 Javascript
JavaScript中的View-Model使用介绍
2011/08/11 Javascript
JavaScript/jQuery 表单美化插件小结
2012/02/14 Javascript
JQuery之focus函数使用介绍
2013/08/20 Javascript
jquery中focus()函数实现当对象获得焦点后自动把光标移到内容最后
2013/09/29 Javascript
jquery绑定事件不生效的解决方法
2014/02/11 Javascript
JS+CSS实现的经典圆角下拉菜单效果代码
2015/10/21 Javascript
解决layui前端框架 form表单,table表等内置控件不显示的问题
2018/08/19 Javascript
Vue中Quill富文本编辑器的使用教程
2018/09/21 Javascript
vue-cli构建vue项目的步骤详解
2019/01/27 Javascript
深入解析微信小程序开发中遇到的几个小问题
2020/07/11 Javascript
Python中非常实用的一些功能和函数分享
2015/02/14 Python
关于Python元祖,列表,字典,集合的比较
2017/01/06 Python
Python判断文件或文件夹是否存在的三种方法
2017/07/27 Python
pycharm 更改创建文件默认路径的操作
2020/02/15 Python
文件上传服务器-jupyter 中python解压及压缩方式
2020/04/22 Python
Python自动登录QQ的实现示例
2020/08/28 Python
Python绘制K线图之可视化神器pyecharts的使用
2021/03/02 Python
建筑系毕业生自我鉴定
2014/01/24 职场文书
幼儿园保教管理制度
2014/02/03 职场文书
节约电力资源的建议书
2014/03/12 职场文书
《傅雷家书》教学反思
2014/04/20 职场文书
关于雷锋的演讲稿
2014/05/10 职场文书
党性分析自查总结
2014/10/14 职场文书
教师群众路线学习心得体会
2014/11/04 职场文书
2014年学校党建工作总结
2014/11/11 职场文书
2014年文明创建工作总结
2014/11/25 职场文书
协议书范文
2015/01/27 职场文书
公司聚餐通知
2015/04/22 职场文书
2015年物流客服工作总结
2015/07/27 职场文书
“学党章、守党纪、讲党规”学习心得体会
2016/01/14 职场文书
上个世纪50年代的可穿戴技术:无线电帽子
2022/02/18 无线电
td 内容自动换行 table表格td设置宽度后文字太多自动换行
2022/12/24 HTML / CSS