我有两个站点作为子域托pipe。
其中一个网站使用子域作为dynamic图像请求的别名。
site1.example.com site2.example.com sub1.example.com -> same as site1 sub2.example.com -> same as site1 sub3.example.com -> same as site1
dynamic图像请求subX.example.com/images.php?
。
在htaccess我想:
局限性:我没有访问httpd.conf的权限,所以没有目录块
我testing了SetEnv,SetEnvIf,IfDefine没有成功。
要处理前SetEnvIf
,您需要使用SetEnvIf
和Satisfy
,如下所示:
SetEnvIf Host site1.example.com need_auth SetEnvIf Host site2.example.com need_auth Order allow,deny # setup whatever auth stuff you need here AuthName "Private" AuthType Basic AuthBasicProvider file AuthUserFile /etc/apache2/pwd # here's where you actually check the credentials and env Require valid-user Allow from env=!need_auth Satisfy Any
要做redirect,你可以使用mod_rewrite。 我不完全确定你的意思,但是如果你想把所有的东西都redirect到images.php,你可以这样做:
RewriteCond %{ENV:need_auth} ^.*$ RewriteRule ^(.*)$ http://site1.example.com/images.php [R]
如果在subX.example.com域的vhost文件中添加了RedirectMatch,可能会更容易一些。 .htaccess文件被devise为基于每个目录的configuration,而不是基于主机的。 这并不是真的被devise来做你要问的东西。
我find了解决scheme。 它值得一个奇怪的A +。
在根.htaccess中:
AuthUserFile /var/www/.htpasswd # will be inherited by children directories .htaccess
在site1目录中.htaccess:
SetEnvIf host ^s[0-9]+\. sub # Detect if the host target a subdomain for images AuthName "Restricted Area" AuthType Basic Order Deny,Allow Require valid-user # Access to anything except image.php is forbidden on subdomains for images <FilesMatch .*> Deny from env=sub </FilesMatch> # Access to image.php does not required authentication in subdomains for images <Files image.php> Allow from env=sub Satisfy any </Files>
并在site2目录下.htaccess:
AuthName "Restricted Area" AuthType Basic Order Deny,Allow Require valid-user