Confac сервера Apache: как исключить список URL из базовой аутентификации (одностраничное приложение) - PullRequest
0 голосов
/ 09 июня 2019

Я схожу с ума, узнав, что я делаю не так. Я пробовал каждое предложение в других сообщениях о переполнении стека, но, похоже, ни одно из них не оказало никакого влияния. Возможно из-за особой структуры моего проекта.

Основной файл конфигурации находится по адресу /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, он не может различить?

...