我有一个域(也是文件夹结构)* .dev.xxx。 我需要制作一个htpasswd,它需要该域上每个站点的凭据。
我的.htaccess
AuthType Basic
AuthName "test"
AuthUserFile /var/www/dev/.htpasswd
Require valid-user
但是当子域有自己的htaccess时,它会覆盖这个子域,并且它可以在未经授权的情况下工作。
有没有办法强迫它授权?
感谢您的回答。
答案 0 :(得分:1)
您的结构可能如下所示。
/.
/..
/sub
/web
/log
只需将.htaccess
放在sub
和web
的父文件夹中。
答案 1 :(得分:1)
浏览器会将不同的子域视为完全不同的身份验证范围。出于安全原因,这是为了防止通过IP /域欺骗进行密码网络钓鱼。因此,通过.htaccess 无法做到这一点,除了之前提到的M1K1O:
只需将.htaccess放在sub和web的父文件夹中即可。
...然后防止并排除子文件夹中的任何.htaccess auth声明。
但是,如果你非常小心,可能有一种服务器端方法在apache主机中处理它。
<VirtualHost [your-ip]:80>
ServerAdmin webmaster@domain.com
DocumentRoot /var/www/dev/
ServerName www.dev.domain.com
ServerAlias *.dev.domain.com
...
# Add to any your virtual host entries:
<Location /var/www/dev>
AuthName "test"
AuthType Digest
AuthDigestAlgorithm MD5
AuthDigestDomain / http://www.dev.domain.com/ http://other.dev.domain.com/
AuthDigestQop auth
AuthDigestProvider file
AuthUserFile /var/www/dev/.htpasswd
</Location>
</VirtualHost>
此方法的一个主要缺点是AuthDigestDomain不支持任何通配符。即:必须显式声明每个预期的子域,而不是使用http://*.dev.domain.com/
这条路线是我过去考虑过的路线,但由于安全隐患很长,尚未深入研究。