首页 > 解决方案 > .htaccess 代码阻止所有直接访问,但允许通过 include / cron_jobs / ajax 请求进行内部访问

问题描述

我有一个以下文件夹结构(为了更好地理解)

app
  modules
    -.htaccess
    -login.php
    -contact.php
    -email.php
  cron_jobs
    -.htaccess
    -.autoBackupDB.php
    -.autoflushTmpDirectory.php
  tmp
    -.htaccess
    <some tmp files and folders created>

下面是我正在使用的 .htaccess 代码

# Disable directory browsing
Options All -Indexes

Order deny,allow
Deny from all

我想要达到什么目的?

我想通过直接 URL 或从其他方式直接调用来阻止对这些文件夹的所有请求,我可以用上面的.htaccess代码做到这一点,但是当我执行 cron 作业或发出 ajax 请求时会出现问题。我只希望文件夹的内容可以被内部请求访问cron_jobsrequest made by ajax或者include("")应该阻止对文件的任何类型的访问。

它有时会弹出一个错误403 / 404,这使得它无法访问。

任何人都可以通过知道我哪里出错或指导我更新解决方案来帮助我。

标签: phpapache.htaccess

解决方案


cron 作业有 2 种变体:通过命令行访问和通过 http/https 请求访问。第一个不受 Web 服务器设置的影响。可以通过更改规则来允许第二个:

Order deny,allow
Allow from IP_OF_CRON_SERVER
Deny from all

访问includerequire完全不受影响。

Ajax 调用是 http/https 请求。所以没有区别。通常的方法是通过服务器配置(.htaccess)允许它并通过 PHP 检查权限。


推荐阅读