我有一个包含多个 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 可能映射到同一个文件系统位置,因此可能会规避此类访问控制。