如何阻止除根PHP脚本之外的所有内容

时间:2017-04-12 17:10:01

标签: php apache .htaccess

我想阻止对项目目录中每个文件的HTTP访问,除了位于根文件夹(而不是子文件夹)中的PHP脚本。

我当前的.htaccess文件如下所示:

# Disable Directory Listings in this Directory and Subdirectories
# This will hide the files from the public unless they know direct URLs
Options -Indexes

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^api/(.*)$ api.php/$1 [QSA,L]
</IfModule>

# Deny all files from being accessed with Apache
Order Deny,Allow
Deny from all

# Allow specific PHP files at root
<FilesMatch "/(api|cron|status)\.php$">
    Order Allow,Deny
    Allow from all
</FilesMatch>

除了api.php脚本上的URL重写之外,这大部分都有效。我已经尝试将FilesMatch regexp更改为/(api|cron|status)(\.php)?$,但它仍然向我发送了403响应。

任何人都可以向我解释我在这里做错了什么?我通常可以使用regexp,但这让我觉得Apache并不像其他人一样处理它们......

1 个答案:

答案 0 :(得分:0)

Deny from all    

<FilesMatch "^(api|cron|status)\.php$">
 Order Allow,Deny
 Allow from all
</FilesMatch>

我想确保你的.htaccess在根级别。