我在一个文件中存储了一个 cookie,并希望限制只有设置了该特定 cookie(具有指定名称)的用户才能访问,并将其他人(从站点中的任何页面)重定向到我的站点根目录。由于我的站点使用节点后端来验证用户(即验证密码),因此我还想豁免它的 proxypass 页面(“/authenticate”)以及其前面的任何“子页面”。
我遇到的问题是,这些“白名单”通常不涵盖整个网站(包括子域)并且不适用于正在编入索引的目录。
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/site.com.pem
SSLCertificateKeyFile /etc/apache2/ssl/site.com.key
</VirtualHost>
<VirtualHost *:443>
ServerName site.com
DocumentRoot /var/www/site.com/html
<Directory /var/www/site.com/html/files>
Options +Indexes
AllowOverride All
</Directory>
ProxyRequests Off
ProxyPass /authorise http://localhost:3001
ProxyPassReverse /authorise http://localhost:3001
</VirtualHost>
<VirtualHost *:443>
ServerName movie.site.com
ProxyRequests Off
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/
</VirtualHost>
<VirtualHost *:443>
ServerName mail.site.com
DocumentRoot /var/www/site.com/roundcube
ErrorLog ${APACHE_LOG_DIR}/roundcube-error.log
CustomLog ${APACHE_LOG_DIR}/roundcube-access.log combined
<Directory /var/www/roundcube>
Options -Indexes
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
编辑: 只是为了澄清一下,我知道我可以做类似以下的事情来实现我的目标(在某种程度上):
RewriteEngine on
RewriteCond %{HTTP_COOKIE} !MYCOOKIE
RewriteRule ^/myhome/content/ - [F]
但是我如何确保这对每个 VirtualHost (即每个子域) 都有影响,并且还能从文件中读取单个 cookie,以便我能够在不必重新启动 apache 的情况下进行更改。
谢谢你!