Apache下禁止php文件被直接访问的解决方案

 更新时间:2013年04月25日 09:25:59   转载 作者:  
想在重写规则里直接禁止php后缀的URL被访问。但后来发现重写规则是递归调用的,如果在重写规则里直接禁止php,那么重写到php文件的规则也会失效,于是有了下面的方法

  一开始,我想在重写规则里直接禁止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'];//成功访问显示信息
  ?>

  把这段PHP代码修改下丢进全局引用里就基本上没啥问题了,虽然不是完美解决,但是至少还是解决了,以后也许会发现更好的方法。

相关文章

  • PHP中file_exists与is_file,is_dir的区别介绍

    PHP中file_exists与is_file,is_dir的区别介绍

    很显然file_exists是受了asp的影响,因为asp不但有fileExists还有folderExists,driverExists,那么PHP中file_exists是什么意思呢
    2012-09-09
  • php中通过虚代理实现延迟加载的实现代码

    php中通过虚代理实现延迟加载的实现代码

    基本原理是通过一个虚代理(Virtual Proxy)做占位符,一旦访问代理对象的某成员(方法或属性),加载就被触发。
    2011-06-06
  • 降低PHP Redis内存占用

    降低PHP Redis内存占用

    本文主要介绍了降低PHP Redis内存占用的方法。具有很好的参考价值。下面跟着小编一起来看下吧
    2017-03-03
  • php根据年月获取当月天数及日期数组的方法

    php根据年月获取当月天数及日期数组的方法

    这篇文章主要介绍了php根据年月获取当月天数及日期数组的方法,涉及php针对日期的相关判断、转换及字符与数组的遍历操作相关技巧,需要的朋友可以参考下
    2016-11-11
  • 关于PHP5 Session生命周期介绍

    关于PHP5 Session生命周期介绍

    PHP5有很多值得学习的地方,这里我们主要介绍PHP5 Session的使用,Session 是如何来判断客户端用户的呢?
    2010-03-03
  • PHP中empty,isset,is_null用法和区别

    PHP中empty,isset,is_null用法和区别

    最近在阅读项目的源码,发现源码中就对empty、isset和is_null函数(语言特性)乱用,有的地方很明显的就挖坑了。不能正确的去理解这些东西,就很可能给后续的开发挖坑了。
    2017-02-02
  • php程序效率优化的一些策略小结

    php程序效率优化的一些策略小结

    大家在开发过程中,经常会考虑到一些php的代码的执行效率问题,这样我们的程序才会运行的更加流畅,这里简单的总结小,需要的朋友可以参考下。
    2010-07-07
  • PHP实现类似于C语言的文件读取及解析功能

    PHP实现类似于C语言的文件读取及解析功能

    这篇文章主要介绍了PHP实现类似于C语言的文件读取及解析功能,结合实例形式分析了php读取文件的相关函数与使用注意事项,需要的朋友可以参考下
    2017-09-09
  • PHP 日,周,月点击排行统计

    PHP 日,周,月点击排行统计

    原理就是先判断当前文章的日期是否为当月当日当周的,是就点击数加1
    2012-01-01
  • 探究Laravel使用env函数读取环境变量为null的问题

    探究Laravel使用env函数读取环境变量为null的问题

    最近在工作中遇到一个问题,不知道大家有没有遇到过,在 Laravel中(除 app/config 目录下的配置文件中)使用env函数读取环境变量,有时有用,有时返回 null,这究竟怎么回事?下面通过这篇文章让我们一探究竟。有需要的朋友们下面来一起看看吧。
    2016-12-12

最新评论