Shopware 6配置Basic Auth排除/newsletter路径失败求助
你的核心问题是配置逻辑错误:<RequireAny>会让任意一个条件满足就通过验证,但当前写法中Require valid-user和路径表达式的逻辑关系混乱,导致Auth验证规则未按预期生效。
正确配置方案(两种可选)
方案一:使用<Location>精准匹配路径(推荐)
这种方式逻辑最清晰,直接对目标路径单独设置权限:
<IfModule mod_authz_core.c> # 全局启用Basic Auth基础配置 AuthType Basic AuthName "please login" AuthUserFile /my/cool/path/.htpasswd Require valid-user # 对/newsletter开头的路径跳过验证 <Location "/newsletter"> Require all granted </Location> </IfModule>
方案二:用表达式逻辑控制
如果不能用<Location>,可以通过Require表达式的逻辑组合实现:
<IfModule mod_authz_core.c> AuthType Basic AuthName "please login" AuthUserFile /my/cool/path/.htpasswd # 满足以下任意一个条件即可访问: # 1. 请求路径是/newsletter开头;2. 已通过用户验证 <RequireAny> Require expr %{REQUEST_URI} =~ m#^/newsletter# Require valid-user </RequireAny> </IfModule>
关键说明
- 原配置中
<RequireAny>内部同时放置Auth指令和权限规则,导致Auth配置的作用范围被打乱,必须将Auth基础配置移到<RequireAny>外部 - 方案一的
<Location>指令优先级更高,能精准覆盖目标路径,避免逻辑冲突
内容的提问来源于stack exchange,提问作者pt1602
相关产品推荐
相关产品推荐

