我想禁止访问任何文件或目录,其名称以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。