使用 .htaccess 隐藏文件夹

Posted

技术标签:

【中文标题】使用 .htaccess 隐藏文件夹【英文标题】:Hide folders with .htaccess 【发布时间】:2010-11-25 19:32:36 【问题描述】:

是否可以隐藏我的根文件夹中的文件夹? 以防我的 index.php 消失你知道吗?

如果有人请求,我是否也可以显示 404 错误?

【问题讨论】:

【参考方案1】:

在要隐藏文件夹列表的目录中创建一个文件名 .htaccess 和此代码

RewriteEngine on

RewriteCond %REQUEST_FILENAME -d
RewriteRule ^ - [R=404,L]

【讨论】:

【参考方案2】:

我使用了这个代码:

在您的主根 .htaccess 中放置流动代码:

RewriteEngine on
RewriteRule ^dfjgekbjvrskzcnfvberidurvf/?(.*)$    /folder1/$1 [L]


Then at .htaccess file in folder1 directory put this :

RewriteEngine on
RewriteCond %THE_REQUEST !dfjgekbjvrskzcnfvberidurvf
RewriteRule ^    - [F,L]

【讨论】:

【参考方案3】:

在我的情况下,我这样做了,但它显示错误 500。这是我的 .htaccess

RewriteEngine on

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %REQUEST_URI !^/[0-9]+\..+\.cpaneldcv$
RewriteCond %REQUEST_URI !^/\.well-known/pki-validation/[A-F0-9]32\.txt(?:\ Comodo\ DCV)?$
RewriteRule ^index\.php$ - [L]
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteCond %REQUEST_URI !^/[0-9]+\..+\.cpaneldcv$
RewriteCond %REQUEST_URI !^/\.well-known/pki-validation/[A-F0-9]32\.txt(?:\ Comodo\ DCV)?$
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

Options - Indexes

谢谢

【讨论】:

【参考方案4】:

我通过在我不想访问的所有文件夹上添加一个 index.html 来解决这个问题。 index.html 页面包含一行,其中包含以下 header("Location:thepageiwanttoshown.html")。这样,如果用户不小心访问了受限制的文件夹,他们将被即时重定向。希望对你有帮助

【讨论】:

【参考方案5】:

如果您确实想为子文件夹显示 404 错误,请在 /.htaccess 中尝试以下操作:

RewriteEngine on

RewriteCond %REQUEST_FILENAME -d
RewriteRule ^ - [R=404,L]

如果请求一个已存在的/folder/subfolder,上述规则会将其重写为/404

【讨论】:

【参考方案6】:

这是我对同一问题的首选解决方案(虽然这显示访问被拒绝而不是 404):

<files "/path/to/single/file/or/folder">
  order allow,deny
  deny from all
</files>

这也使您可以选择授予对某些 IP 的访问权限(在这种情况下,它拒绝对所有 IP 的访问)

如果您想使用模式,可以将“/path/to/single/file/or/folder”替换为正则表达式。否则,您必须为要阻止访问的每个特定文件或文件夹使用多个块。

【讨论】:

【参考方案7】:

对我来说,添加总是有效的

<Directory "/var/www/yourfolder"> IndexIgnore * </Directory>

到文件 /etc/apache2/sites-available/default

【讨论】:

【参考方案8】:

正如duskwuff所说,你需要的是

Options - Indexes

这将导致该特定目录出现 403 禁止错误。因此,要提供自定义错误页面,您将需要

ErrorDocument   403 myErrorPage.html

希望对你有帮助

【讨论】:

这个答案晚了 5 个小时,但应该是公认的答案。这将在没有索引文件的情况下产生错误,然后您可以处理或使用默认服务器。接受的答案将简单地隐藏目录视图页面中的文件夹。所以它会产生误报。旧帖子但在谷歌搜索结果中。【参考方案9】:

你想要的大概是

Options -Indexes

如果没有找到 DirectoryIndex 文件,只会给出 404 错误。

【讨论】:

我认为它是一个 403。【参考方案10】:
IndexIgnore *

以上内容将阻止列出所有文件。这里* 充当通配符。如果需要,您可以将其替换为更具体的内容。

【讨论】:

替换*如何?假设我要隐藏 3 个文件和 1 个文件夹 (file1.jpg, some.pdf, else.html, i-am-a-folder) IndexIgnore 不会禁止访问它所保护的文件夹中的已知文件位置。 htaccess 与:order allow,deny deny from all 会做得更好。

以上是关于使用 .htaccess 隐藏文件夹的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 .htaccess 隐藏 .php URL 扩展名?

htaccess 重定向 + 在 url 中隐藏子文件夹

.htaccess 重定向到子文件夹并隐藏在 uri

thinkphp5里面.htaccess文件为空为啥也能隐藏入口文件?

利用htaccess实现隐藏真实地址

.htaccess 从站点根目录重定向到公共文件夹,在 URL 中隐藏“公共”?