禁用对特定目录及其内容的访问

禁用对特定目录及其内容的访问

我有一个包含多个 Web 应用程序的网站。每个 Web 应用程序都对应文档根目录的一个子目录,其名称以“Web”开头。(例如,/WebLulzGenerator/WebInternetHateMachine是 Web 应用程序,但/MoarHelperz不是。)

我希望这些 Web 应用程序只能通过 HTTPS 访问,因此我在文件中执行以下操作httpd.conf

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

<DirectoryMatch "^/Web[A-Za-z0-9]+">
    Order allow,deny
    Deny from all
</DirectoryMatch>

# In extra/httpd-ssl.conf, access to "^/Web[A-Za-z0-9]+"
# is reenabled, but only through HTTPS.

然而,当我测试我的配置时“http://myip/WebTest“正确打开了。我做错了什么?

答案1

<Directory>映射到资源的物理位置。您应该使用<Location>或者<LocationMatch>查找位置。

<LocationMatch /Web.*>
   Order Allow,deny
   Deny from All
</Location>

请注意以下警告文档

<Location> 部分完全在文件系统之外运行。这会带来多种后果。最重要的是,不应使用 <Location> 指令来控制对文件系统位置的访问。由于多个不同的 URL 可能映射到同一个文件系统位置,因此可能会规避此类访问控制。

相关内容