我有一个 Apache 2.2 VirtualHost,DocumentRoot
指向/var/www/mysite.com
目录。我还必须Alias
使某些页面/脚本/var/www/stuff
易于访问(对其他 VirtualHosts):
<VirtualHost *:80>
DocumentRoot /var/www/mysite.com
ServerName www.mysite.com
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/mysite.com/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
Alias /stuff /var/www/stuff
</VirtualHost>
该DocumentRoot
目录包含一个阻止未经身份验证的访问的.htaccess
文件( ):/var/www/mysite.com/.htaccess
AuthType Basic
AuthName "Please say the word..."
AuthBasicProvider file
AuthUserFile /var/www/mysite.com/.htpasswd
AuthGroupFile /dev/null
Require valide-user
当我尝试访问http://www.mysite.com,我得到了 HTTP 身份验证表单。当我尝试访问http://www.mysite.com/stuff,我没有得到 HTTP 身份验证表单:文件可以自由访问。
/var/www/mysite.com/.htaccess
访问时似乎跳过了http://www.mysite.com/stuff因为文件在/var/www/stuff
ID。不在/var/www/mysite.com/.htaccess
的父目录下。
我发现的唯一解决方法是创建一个/var/www/stuff/.htaccess
符号链接/var/www/default/.htaccess
:
user@server:~$ ln -s /var/www/default/.htaccess /var/www/stuff/.htaccess
有没有更好/更清洁的解决方案?
答案1
如果 /var/www/stuff 实际上是 /var/www/mysite.com/stuff 并且您删除了别名,它就会按您希望的方式工作。目前,“stuff”不在 DocumentRoot 内,Apache 究竟为什么要在其他地方寻找 .htaccess 文件呢?