У меня запущено веб-приложение, созданное в Laravel и обслуживаемое через Apache.
Как известно, корень приложения Laravel - <path_to_project_code>/public
.
Я хочу защищенную папку в /public
, для точности: <path>/public/apidoc
.
Я пытаюсь это
<VirtualHost <ip_redacted>:80>
ServerName www.mydomain.com
ServerAlias www.mydomain.com
ServerAdmin info@mycompany.it
ServerPath /www.mydomain.com
DocumentRoot /var/www/www.mydomain.com/public/
DirectoryIndex index.html index.php
<Directory /var/www/www.mydomain.com/public/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
Require all granted
</Directory>
<Directory "/var/www/www.mydomain.com/public/apidoc">
AuthType Basic
AuthName "Authentication Required"
AuthUserFile "/etc/htpasswd/.www.mydomain.com.passwd"
Require valid-user
Order allow,deny
Allow from all
</Directory>
CustomLog ${APACHE_LOG_DIR}/vhosts/www-mydomain-com/access.log vhost_combined
ErrorLog ${APACHE_LOG_DIR}/vhosts/www-mydomain-com/error.log
RewriteEngine on
RewriteCond %{SERVER_NAME} =www.mydomain.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
Сконфигурированный, www.domain.com
подается с ....../public
, и это нормально.
И www.domain.com/apidoc
подается с ....../public/apidoc
, и это нормально.
Но доступ к www.mydomain.com/apidoc НЕ требует http auth , как я хочу и как я ожидал.
Дополнительная информация
Содержимое / public / apidoc - это статические html-файлы, сгенерированные APIDocjs.
Простой эквивалент Nginx, работающего в разработке, из того, что я пытаюсь сделать, это
location /apidoc {
auth_basic "Restricted Area";
auth_basic_user_file /etc/nginx/sites-auth/www.mydomain.com.password;
}
Мне просто нужно перенести эти 4 строки из Nginx в Apache