Php 通过url保护对文件和文件夹的访问

Php 通过url保护对文件和文件夹的访问,php,security,.htaccess,Php,Security,.htaccess,在我的.htaccess文件中,我使用以下命令阻止直接访问文件夹: Options -Indexes 我正在使用以下命令阻止访问我们的关键文件: <Files admin.php> Order Deny,Allow Deny from all Allow from 127.0.0.1 Allow from (my ipaddress) </Files> 命令拒绝,允许 全盘否定 允许从127.0.0.1开始 允许来自(我的IP地址)

在我的.htaccess文件中,我使用以下命令阻止直接访问文件夹:

Options -Indexes
我正在使用以下命令阻止访问我们的关键文件:

<Files admin.php>
    Order Deny,Allow
    Deny from all
    Allow from 127.0.0.1
    Allow from (my ipaddress)
</Files>

命令拒绝,允许
全盘否定
允许从127.0.0.1开始
允许来自(我的IP地址)
所以,现在用户不能访问www.domain.com/scripts,因为它抛出404错误,也不能访问admin.php

但我如何防止直接访问所有人

例如,如果有人知道文件名,他们仍然可以访问它,例如:www.domain.com/scripts/process.php


怎么办?

使用mod\u重写:

将此规则置于所有其他规则之上:

RewriteRule ^scripts(/.*|)$ - [F,NC]
不使用mod\u重写:

将此代码放入
scripts/.htaccess

Order Deny,Allow
Deny from all
更新:要阻止对所有文件的直接访问:

# If the request is for a valid file
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{THE_REQUEST} \..+[\s?]
# return forbidden error if not static files
RewriteRule (?!^.+\.(?:jpe?g|gif|bmp|png|tiff|css|js)$)^.*$ - [F]

似乎您应该将目录移到文档根目录之外。我试图阻止访问所有文件(/scripts)只是一个例子。已尝试重写规则^(/.*|)$-[F,NC]但它仍然允许访问文件。是否尝试阻止直接访问所有文件?是的,例如:domain.com/home=OK,domain.com/home/file.php not okayty,它可以工作。我以前使用过#RewriteCond%{REQUEST_FILENAME}-f和#RewriteCond%{REQUEST_FILENAME}-d“!”是做什么的?什么时候需要-d?修复程序产生了一个新问题。mys样式表和某些链接不再工作?