Назад | Перейти на главную страницу

Делает каталог псевдонимов Apache2 учитывает родительский файл .htaccess

У меня есть виртуальный хост Apache 2.2, где 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 мне бы. не под /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

Есть ли лучшее / более чистое решение?

Он работал бы так, как вы хотите, если бы / var / www / stuff на самом деле был /var/www/mysite.com/stuff и вы удалили псевдоним. В настоящее время «материал» НЕ находится внутри DocumentRoot, зачем Apache искать файл .htaccess где-то еще?