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设计模式 Composite (组合模式)
Jun 26 PHP
php中使用parse_url()对网址进行解析的实现代码(parse_url详解)
Jan 03 PHP
PHP自动生成后台导航网址的最佳方法
Aug 27 PHP
php class类的用法详细总结
Oct 17 PHP
php通过ajax实现双击table修改内容
Apr 28 PHP
php中file_get_content 和curl以及fopen 效率分析
Sep 19 PHP
举例讲解PHP面对对象编程的多态
Aug 12 PHP
php微信公众平台开发之获取用户基本信息
Aug 17 PHP
PHP信号量基本用法实例详解
Feb 12 PHP
让你的PHP7更快之Hugepage用法分析
May 31 PHP
PHP curl批处理及多请求并发实现方法分析
Aug 15 PHP
PHP封装类似thinkphp连贯操作数据库Db类与简单应用示例
May 08 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
php str_replace的替换漏洞
2008/03/15 PHP
php获取mysql字段名称和其它信息的例子
2014/04/14 PHP
php实现处理输入转义字符的代码
2015/11/08 PHP
PHP simplexml_load_string()函数实例讲解
2019/02/03 PHP
使用jQuery轻松实现Ajax的实例代码
2010/08/16 Javascript
使用jquery实现以post打开新窗口
2014/03/19 Javascript
浅析js中substring和substr的方法
2015/11/09 Javascript
Nodejs初级阶段之express
2015/11/23 NodeJs
javascript运算符——逻辑运算符全面解析
2016/06/27 Javascript
JS给swf传参数的实现方法
2016/09/13 Javascript
解决axios会发送两次请求,有个OPTIONS请求的问题
2018/10/25 Javascript
浅谈webpack devtool里的7种SourceMap模式
2019/01/14 Javascript
详解如何使用nvm管理Node.js多版本
2019/05/06 Javascript
微信小程序如何使用canvas二维码保存至手机相册
2019/07/15 Javascript
深入理解令牌认证机制(token)
2019/08/22 Javascript
ES6中的类(Class)示例详解
2020/12/09 Javascript
Python3 入门教程 简单但比较不错
2009/11/29 Python
Python实现string字符串连接的方法总结【8种方式】
2018/07/06 Python
10 分钟快速入门 Python3的教程
2019/01/29 Python
Python基于opencv实现的简单画板功能示例
2019/03/04 Python
Python实现账号密码输错三次即锁定功能简单示例
2019/03/29 Python
详解Python的循环结构知识点
2019/05/20 Python
tensorflow使用freeze_graph.py将ckpt转为pb文件的方法
2020/04/22 Python
Python with语句用法原理详解
2020/07/03 Python
常用的四种CSS透明属性介绍
2014/04/12 HTML / CSS
伦敦最著名的老字号百货公司:Selfridges(塞尔福里奇百货)
2016/07/25 全球购物
德国香水、化妆品和护理产品网上商店:Parfumdreams
2018/09/26 全球购物
工业学校毕业生自荐书
2014/01/03 职场文书
商务邀请函范文
2014/01/14 职场文书
2014年圣诞节促销方案
2014/03/14 职场文书
计算机应用专业自荐信
2014/07/05 职场文书
2014年个人技术工作总结
2014/12/08 职场文书
国庆庆典邀请函
2015/02/02 职场文书
2015羊年春节慰问信
2015/02/14 职场文书
导游词之丹东鸭绿江
2019/10/24 职场文书
SQL Server使用CROSS APPLY与OUTER APPLY实现连接查询
2022/05/25 SQL Server