Bla*_*ack 6 .htaccess http-basic-authentication apache2
我有一个网站,如果不输入基本身份验证凭据,任何人都不允许进入。
但是,我需要每个人都可以访问媒体文件夹,因为我们正在使用创建 PDF 的第三方扩展,并且只有在媒体可访问时我们才能完全测试它们。
媒体文件夹位于/var/www/company/pub/media。
域 ( www.example.com ) 指向/var/www/company/pub,因此pub文件夹是入口点。
这是我的 .htaccess 尝试 ( /var/www/company/.htaccess):
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/pub/
RewriteCond %{REQUEST_URI} !^/setup/
RewriteCond %{REQUEST_URI} !^/update/
RewriteCond %{REQUEST_URI} !^/dev/
RewriteRule .* /pub/$0 [L]
DirectoryIndex index.php
AuthType Basic
AuthName "Protected"
AuthUserFile "/var/www/company/.htpasswd"
# Exclude media folder from basic auth
SetEnvIf Request_URI "^/media/*" media
Order allow,deny
Require valid-user
Allow from env=media
Deny from env=!media
Satisfy any
Run Code Online (Sandbox Code Playgroud)
但如果我尝试调用http://www.example.com/media/someimage.jpg那么我仍然会收到基本的身份验证登录提示。
环境:
阿帕奇 2.4.41 (Ubuntu)
将 .htaccess 文件放入带有 .htaccess 扩展名的媒体文件夹中AuthType None。
AuthType None
Require all granted
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)# Exclude media folder from basic auth SetEnvIf Request_URI "^/media/*" media Order allow,deny Require valid-user Allow from env=media Deny from env=!media Satisfy any
这本来可以工作,除非指令中的正则表达式是错误的,因此在请求时未设置SetEnvIf环境变量。您在量词之前缺少一个点,即。。但是,您可以完全删除尾随,即。,这实际上是相同的(并且更有效)。media/media/someimage.jpg*^/media/.**^/media/
该Deny from env=!media指令是多余的。
因此,以下内容应该有效:
# Exclude media folder from basic auth
SetEnvIf Request_URI "^/media/" media
Require valid-user
Order allow,deny
Allow from env=media
Satisfy Any
Run Code Online (Sandbox Code Playgroud)
然而,这是使用已弃用的 Apache 2.2 指令。在 Apache 2.4 上,您可以执行以下操作:
# Exclude media folder from basic auth
SetEnvIf Request_URI "^/media/" media
Require valid-user
Require env media
Run Code Online (Sandbox Code Playgroud)
默认容器是<RequireAny>- 所以你不需要包含它。如果您愿意,您可以明确表示:
<RequireAny>
Require valid-user
Require env media
</RequireAny>
Run Code Online (Sandbox Code Playgroud)
或者,您可以将整个授权块包含在表达式中<If>。例如:
# Password protect everything except the "/media/" subdirectory
<If "%{REQUEST_URI} !~ m#^/media/#">
AuthType Basic
AuthName "Protected"
AuthUserFile "/var/www/company/.htpasswd"
Require valid-user
</If>
Run Code Online (Sandbox Code Playgroud)
该运算符!~是否定正则表达式匹配。
| 归档时间: |
|
| 查看次数: |
6059 次 |
| 最近记录: |