Я схожу с ума, узнав, что я делаю не так.
Я пробовал каждое предложение в других сообщениях о переполнении стека, но, похоже, ни одно из них не оказало никакого влияния. Возможно из-за особой структуры моего проекта.
Основной файл конфигурации находится по адресу /etc/httpd/conf/main.conf и содержит следующее:
<VirtualHost *:80>
DocumentRoot /var/www/html/
ServerName myService.it
#urls starting with this expr have to bypass auth
SetEnvIf Request_URI "^/noAuthResource/" noauth=1
<Directory "/var/www/html/my-app">
AuthType Basic
AuthName "Restricted Content"
AuthUserFile /var/www/.htpasswd
Require valid-user
Allow from env=noauth
</Directory>
У меня есть одностраничное приложение, которое находится здесь:
/var/www/html/my-app/index.html
index.html может обрабатывать несколько URL-адресов благодаря другой конфигурации, расположенной в /etc/httpd/conf.d/my-app.conf:
# If an existing asset or directory is requested go to it as it is
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d
RewriteRule ^ - [L]
# If it is against the gateway go to the gateway (APIs)
RewriteCond %{REQUEST_URI} ^/gateway*
RewriteRule ^ - [L]
# If the requested resource doesn't exist, use index.html
RewriteRule ^ /index.html
По какой-то причине вышеуказанная конфигурация не работает: она всегда запрашивает у меня имя пользователя / пароль, и это проблема, так как я должен сделать некоторые разделы веб-приложения доступными для общественности без аутентификации.
Может быть, это потому, что apache не может обрабатывать "виртуальные URL-адреса" и, поскольку все серверные по index.html, он не может различить?