У меня есть виртуальный хост 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 где-то еще?