我想禁止访问任何文件或目录,其名称以DOT开头。 我想出了以下内容,但只有在直接位于Document根目录下的情况下,才能禁止以DOT开头的文件/目录的访问。
<Files ~ "^.|/."> Order allow,deny Deny from all </Files>
有了这个,
http://my_server.com/.svn/entries --> Permission denied http://my_server.com/abcd/.svn/entries --> Accessible,should be disabled
什么是适当的正则expression式来实现呢?
谢谢,
htaccess 301redirectURL的参数
查询string和Mod重写
htaccess文件拒绝所有,redirect到404没有find403.shtml,但没有定义的自定义错误页面
WAMP,Laravel 5:路由不工作 – NotFoundHttpException
J.P
.htaccess重写友好的URL
.htaccess:不在www base dir中的位置
将wwwredirect到非www
MOD_REWRITE用于urlvariables,删除空参数并为第一个和第二个variables使用多于1个字段
http:// domain to https:// www in one redirect
您的代码不起作用,因为<Files>仅适用于所请求的文档的基本名称 。 也就是最后一个斜线后的部分。 (来源: http : //httpd.apache.org/docs/current/mod/core.html#files )
Apache在默认安装中阻止.htaccess文件(更好:以.ht开头的所有文件)。 如果仔细观察配置文件,您会看到如下所示的内容:
<FilesMatch "^.ht"> Order allow,deny Deny from all </FilesMatch>
因此,要隐藏所有以点开头的文件,您可以使用:
<FilesMatch "^."> Order allow,deny Deny from all </FilesMatch>
为了使它适用于以点开头的目录,请使用以下(经过测试的)代码:
<DirectoryMatch "^.|/."> Order allow,deny Deny from all </DirectoryMatch>
RewriteRule (^.|/.) - [F]
这将拒绝查看以点开头的任何文件或目录。 它影响路径树中的任何级别。
[F]末尾的修饰符表示禁止访问(不需要L修饰符来表示它是最后一条规则,默认情况下是隐含的)。
正则表达式有两个部分(任何一个都可以匹配,不要求都是):
(part1|part2)
第一部分匹配从点开始的任何内容(对于在每个目录.htaccess文件中使用它的情况,并且在我们匹配的字符串的开头不会有斜线):
^.
例如,这将适用于.test , .git/HEAD但不适用于/.git path/.hidden /.git 。
第二部分匹配任何包含斜线后跟点的内容。 如果你在VirtualHost或者Apache的配置中有这个规则,那么这个方法很有用,在这个配置中我们匹配的一个字符串可以用斜杠开始。
该规则将匹配: some/.hidden /.git , some/.hidden /.git这个规则将不匹配: .git , .hidden
当我们结合这两个规则时,似乎我们涵盖了所有可能的情况。
用重写mod:
RewriteEngine on RewriteCond %{THE_REQUEST} ^.*/. RewriteRule ^(.*)$ - [R=404]
/myDir/.svn => 404 /.gitignore => 404 /dir1/dir2/dir3/..../.toHide => 404
这对我来说是完美的(Apache 2.4):
<LocationMatch "/."> Require all denied </LocationMatch>
拒绝包含以点(文件或目录)开头的组件的URL。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。