我想禁止访问任何文件OR目录,其名称以DOT开头.我想出了下面的,但它禁止访问与DOT开头,只有当他们是直接在文档根目录的文件/目录.
<Files ~ "^\.|\/\.">
Order allow,deny
Deny from all
</Files>
Run Code Online (Sandbox Code Playgroud)
有了这个,
http://my_server.com/.svn/entries --> Permission denied
http://my_server.com/abcd/.svn/entries --> Accessible, should be disabled
Run Code Online (Sandbox Code Playgroud)
什么是正确的正则表达式来实现这一目标?
谢谢,
J.P
Lek*_*eyn 53
您的代码不起作用,因为<Files>
只适用于基名要求的文件.也就是说,最后一次斜线之后的部分.(来源:http://httpd.apache.org/docs/current/mod/core.html#files)
Apache .htaccess
在默认安装中阻止文件(更好:以所有文件开头.ht
).如果仔细查看配置文件,您会看到如下内容:
<FilesMatch "^\.ht">
Order allow,deny
Deny from all
</FilesMatch>
Run Code Online (Sandbox Code Playgroud)
因此,要隐藏所有以点开头的文件,您可以使用:
<FilesMatch "^\.">
Order allow,deny
Deny from all
</FilesMatch>
Run Code Online (Sandbox Code Playgroud)
为了使其适用于以点开头的目录,请使用以下(已测试)代码:
<DirectoryMatch "^\.|\/\.">
Order allow,deny
Deny from all
</DirectoryMatch>
Run Code Online (Sandbox Code Playgroud)
Meg*_*lio 18
RewriteRule (^\.|/\.) - [F]
Run Code Online (Sandbox Code Playgroud)
这将拒绝查看以dot开头的任何文件或目录.它会影响路径树中的任何级别.
最后的[F]修饰符表示禁止访问(不需要L修饰符来表示它是应用的最后一条规则,默认情况下是隐含的).
正则表达式有两个部分(任何一个都允许匹配,不需要两者兼有):
(part1|part2)
Run Code Online (Sandbox Code Playgroud)
第一部分匹配从dot开始的任何内容(对于在每个目录.htaccess文件中使用它的情况,在我们匹配的字符串的开头没有斜杠):
^\.
Run Code Online (Sandbox Code Playgroud)
例如,这会为工作.test
,.git/HEAD
但不会对工作/.git
,path/.hidden
.
第二部分匹配包含斜杠后跟点的任何内容.如果您在VirtualHost或侧面Apache配置中有此规则,这很有用,我们匹配的案例字符串可以以斜杠开头.
此规则将匹配:/.git
,some/.hidden
此规则将不匹配:.git
,.hidden
当我们将这两个规则结合起来时,似乎我们涵盖了所有可能的情况.
小智 8
这对我来说非常有效(Apache 2.4):
<LocationMatch "\/\.">
Require all denied
</LocationMatch>
Run Code Online (Sandbox Code Playgroud)
拒绝任何包含以点开头的组件(文件或目录)的 URL。
归档时间: |
|
查看次数: |
18758 次 |
最近记录: |