• 青草久久久国产线免观_国产成人精品无码一区二区蜜柚_国产亚洲欧美在线观看三区_亚洲乱亚洲乱妇50p

    绿色资源网:您身边最放心的安全下载站! 最新软件|热门排行|软件分类|软件专题|厂商大全

    绿色资源网

    技术教程
    您的位置:首页服务器类Web服务器 → Apache下禁止php文件被直接访问的方法

    Apache下禁止php文件被直接访问的方法

    我要评论 2013/04/09 09:05:25 来源:绿色资源网 编辑:www.90jianzhi.cn [ ] 评论:0 点击:162次

    一开始,我想在重写规则里直接禁止php后缀的URL被访问。但后来发现重写规则是递归调用的,如果在重写规则里直接禁止php,那么重写到php文件的规则也会失效。RewriteEngineOn

    RewriteRule^test$/test.php[L]

    RewriteRule^test.php$$0[F,L]

     

    递归调用这真可怕,一开始访问/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代码修改下丢进全局引用里就基本上没啥问题了,虽然不是完美解决,但是至少还是解决了,以后也许会发现更好的方法。

    关键词:Apache

    阅读本文后您有什么感想? 已有 人给出评价!

    • 0 欢迎喜欢
    • 0 白痴
    • 0 拜托
    • 0 哇
    • 0 加油
    • 0 鄙视