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

Символическая ссылка обходит htaccess в apache

У меня на сервере есть защищенная папка.

/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-адресов, то есть.