通过 Apache 服务 Laravel 项目时,我可以保护 public 的子文件夹吗?

Can I protect a subfolder of public when serving Laravel project via Apache?

我有一个在 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的内容是APIDocjs生成的静态html文件。

Nginx 的简单等价物,在开发中,我正在尝试做的是

location /apidoc {
   auth_basic            "Restricted Area";
   auth_basic_user_file  /etc/nginx/sites-auth/www.mydomain.com.password;
}

我只需要将这 4 行从 Nginx 移植到 Apache

已解决。

我删除了整个部分

<Directory "/var/www/www.mydomain.com/public/apidoc">
...
</Directory>

/public/apidoc/.htaccess 使用此内容创建的

AuthType Basic
AuthName "APIDoc"
AuthUserFile  /etc/htpasswd/.www.mydomain.com.passwd
Require valid-user

需要valid-user