php禁止网页抓取(想在重写规则里直接禁止php后缀的URL被访问)

优采云 发布时间: 2022-02-02 22:16

  php禁止网页抓取(想在重写规则里直接禁止php后缀的URL被访问)

  我想在重写规则中直接禁止访问带有php后缀的URL。但是后来我发现重写规则是递归调用的。如果在重写规则中直接禁止php,那么重写到php文件的规则也会失效,所以有以下方法

  一开始是想在rewrite rules里面直接禁止php后缀的url被访问。但后来发现重写规则是递归调用的。如果在重写规则中直接禁止php,那么重写到php文件的规则也会失效。重写引擎开启

  复制代码代码如下:

  重写规则^test$/test.php[L]

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

  

  递归调用很糟糕。当你第一次访问 /test 时,会检查一次 URL 重写,然后在匹配 ^test$ 时在内部重定向到 /test.php。但是内部重定向也会触发URL重写,所以再检查一下,Matching to ^test.php$是强制直接操作[F](Forbidden),所以变成403错误。在这种情况下,必须判断它是否已经被服务器重定向。这时候server变量里面有个REDIRECT_URL可以用,所以我试着用这个来判断。

  复制代码代码如下:

  重写引擎开启

  重写规则^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下防止php文件被直接访问的解决方案的详细内容。更多详情请关注html中文网文章其他相关话题!

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线