使 Apache2 别名目录考虑父级的 .htaccess 文件

使 Apache2 别名目录考虑父级的 .htaccess 文件

我有一个 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 文件呢?

相关内容