У меня на сервере есть защищенная папка.
/var/www/private/
/var/www/private/.htaccess
Также в нем много подпапок с разными сервисами.
/var/www/private/service1/
/var/www/private/service2/
/var/www/private/service3/
Теперь я хотел бы сократить URL-адреса некоторых служб. Я бы хотел использовать символические ссылки.
/var/www/service1 -> private/service1
Теперь тесты:
http: // локальный / частный / сервис1 <- Запрашивает пароль, как я хочу.
http: // локальный / сервис1 <- Не запрашивает пароль !!
Это общее ограничение символических ссылок или проблема неправильной конфигурации? Пробовал на Fedora и Ubuntu с вполне стандартными конфигами (могу выложить по запросу).
Краткий ответ: используйте конфигурацию apache2 вместо файла .htaccess и защитите исходный каталог, а не символическую ссылку (или, может быть, есть способ указать «Каталогу» разыменовать символическую ссылку)
Длинный ответ: у меня была аналогичная проблема с phpmyadmin. Следующий руководство по Debian Я создал символическую ссылку в корне документа:
/var/www/html/phpmyadmin --> /usr/share/phpmyadmin
Потом ставлю директиву
<Directory "/var/www/html/phpmyadmin">
AuthType Basic
AuthName "Restricted Content"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
</Directory>
в /etc/apache2/sites-available/000-default.conf
Это не работает. В конце концов я понял, что защищаемый путь - это не символическая ссылка, а фактический каталог:
<Directory "/usr/share/phpmyadmin">
AuthType Basic
AuthName "Restricted Content"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
</Directory>
Этот сработал.
вы, вероятно, включили htaccess только для целевого каталога. вы также должны сделать то же самое для самой символической ссылки:
<directory /var/www/symlink>
allowoverride all
</directory>
apache не обрабатывает директивы, определенные для целевого каталога, после нахождения символической ссылки в пути. в любом случае, я бы использовал псевдоним в конфигурации apache вместо символической ссылки. для сокращения URL-адресов, то есть.