只有 192.168.0.3 可以请求大多数文件,但任何人都可以请求 /public/file.html

只有 192.168.0.3 可以请求大多数文件,但任何人都可以请求 /public/file.html

我的开发服务器上有以下虚拟主机:

<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>

相关内容