我有一个在Laravel中运行并通过Apache服务的webapp。
众所周知,Laravel的应用程序根是<path_to_project_code>/public
。
我希望在{em> /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
答案 0 :(得分:0)
已解决。
我删除了整个部分
<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
需要有效用户