regex - Apache 配置: Regex to disable access to files/directories beginning with a dot

标签 regex apache .htaccess

我想禁止访问任何名称以点开头的文件或目录。我想出了以下方法,但只有当它们直接位于文档根目录中时,它才会禁用对以 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

实现此目的的正确正则表达式是什么?

最佳答案

您的代码不起作用,因为 <Files>仅适用于所请求文档的基本名称。即最后一个斜杠之后的部分。 (来源:http://httpd.apache.org/docs/current/mod/core.html#files)

Apache block .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>

关于regex - Apache 配置: Regex to disable access to files/directories beginning with a dot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4352737/

相关文章:

apache - 有名为 'apache2' 的进程正在运行

apache - htaccess 在浏览器中启用目录 View 时添加密码

.htaccess - PHP 动态 URL 参数和 GET

regex - .tsv输出文件无法在Hive中正确导入

regex - 使用 sed 和 mv 命令取消隐藏 unix 中的隐藏文件

c++ - 正确使用 regex_match

javascript - 正则表达式单词边界空间

apache - 如何将 HTTP 重定向到 HTTPS?

php - ElasticSearch 同义词路径的文件权限

php - 从 htaccess 中删除 php 扩展,但保持 PATH_INFO 功能