我试图site/includes
通过操纵 URL 来拒绝用户访问该文件夹。
我不知道我是否必须拒绝所有内容并手动进行个别例外以允许,我是否可以拒绝这个文件夹,或者是否有可以使用的重写功能。
具体示例:我不想通过输入localhost/site/includes
URL 来查看目录文件。
创建site/includes/.htaccess
文件并添加这一行:
Deny from all
您还可以使用拒绝访问文件夹RedirectMatch
将以下行添加到 htaccess
RedirectMatch 403 ^/folder/?$
这将为403 forbidden
文件夹返回错误,即:http://example.com/folder/
但它不会阻止访问该文件夹内的文件和文件夹,如果您想阻止文件夹内的所有内容,只需将正则表达式模式更改为^/folder/.*$
.
另一个选项是mod-rewrite
如果url-rewrting-module
启用,您可以使用类似以下内容root/.htaccss
:
RewriteEngine on
RewriteRule ^folder/?$ - [F,L]
这将在内部将请求映射folder
到forbidden
错误页面。
在.htaccess
您需要使用的文件中
Deny from all
将其放入site/includes/.htaccess
以使其特定于includes
目录
如果您只想禁止列出可以使用的目录文件
Options -Indexes
我们将目录设置为非常安全,拒绝所有文件类型的访问。下面是您要插入到 .htaccess 文件中的代码。
Order Allow,Deny
Deny from all
由于我们现在已经设置了安全性,我们现在想要允许访问我们想要的文件类型。为此,请将以下代码添加到您刚刚插入的安全代码下的 .htaccess 文件中。
<FilesMatch "\.(jpg|gif|png|php)$">
Order Deny,Allow
Allow from all
</FilesMatch>
你的最终.htaccess
文件看起来像
Order Allow,Deny
Deny from all
<FilesMatch "\.(jpg|gif|png|php)$">
Order Deny,Allow
Allow from all
</FilesMatch>
您可以为该文件夹创建一个 .htaccess 文件,应该拒绝访问
Deny from all
或者您可以重定向到自定义 404 页面
Redirect /includes/ 404.html
只需将 .htaccess 放入您要限制的文件夹中
## no access to this folder
# Apache 2.4
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
# Apache 2.2
<IfModule !mod_authz_core.c>
Order Allow,Deny
Deny from all
</IfModule>
资料来源:MantisBT来源。
Creating index.php, index.html, index.htm is not secure. Becuse, anyone can get access on your files within specified directory by guessing files name. E.g.: http://yoursite.com/includes/file.dat So, recommended method is creating a .htaccess file to deny all visitors ;). Have fun !!
您还可以将其IndexIgnore *
放在您的根 .htaccess 文件中,以禁用所有网站目录的文件列表,包括子目录
<If>
在 Apache 2.4 上,您可以在根文件中使用 Apache表达式.htaccess
来阻止直接访问此特定子目录及其中的所有内容。
例如:
<If "%{REQUEST_URI} =~ m#^/site/includes($|/)#">
Require all denied
</If>
您可以通过这种方式动态执行此操作:
mkdir($dirname);
@touch($dirname . "/.htaccess");
$f = fopen($dirname . "/.htaccess", "w");
fwrite($f, "deny from all");
fclose($f);
由于某些我不明白的原因,创建文件夹/.htaccess 并从所有添加拒绝对我不起作用。我不知道为什么,它看起来很简单但没有用,而是将 RedirectMatch 403 ^/folder/.*$ 添加到根 htaccess 中。