我的开发服务器上有以下虚拟主机:
<VirtualHost *:80>
ServerName example.com
DocumentRoot /srv/web/example.com/pub
<Directory /srv/web/example.com/pub>
Order Deny,Allow
Deny from all
Allow from 192.168.0.3
</Directory>
</VirtualHost>
该Allow from 192.168.0.3
部分仅允许来自我的工作站机器的请求。
我想进行调整以允许任何人请求特定的 URL:
http://example.com/public/file.html
我该如何改变这一点,以允许/public/file.html
任何人的请求通过?
注意:/public/file.html
实际上并不存在于服务器上的文件。我使用 将所有传入请求重定向到单个索引文件mod_rewrite
。
答案1
我认为你可以在块之前(但也许之后)放置类似的东西<Directory>
。
<LocationMatch "^/public/file.html">
Satisfy Any
Allow from all
</LocationMatch>
查看权限时,我不能 100% 确定操作的顺序。
答案2
我认为你可以做这样的事情:(未经测试)
<Location /public/file.html>
Order Deny,Allow
Allow from All
(Your mod_rewrite stuff)
</Location>
答案3
这是我发现的唯一解决办法:
<VirtualHost *:80>
ServerName example.com
DocumentRoot /srv/web/example.com/pub
SetEnvIf Request_URI "/public/file.html" public
<Directory /srv/web/example.com/pub>
Order Deny,Allow
Deny from all
Allow from 192.168.0.3
Allow from env=public
</Directory>
</VirtualHost>