我需要从正常的 htaccess 基本身份验证保护中排除一个 URL(或者更好的一个前缀)。类似 /callbacks/myBank
或 /callbacks/.*
您有如何做的任何提示吗?
我不是在寻找如何排除文件。
这必须是 url(因为这是基于 PHP 框架的解决方案,所有 url 都使用 mod_rewrite
重定向到 index.php
)。所以这个URL下没有文件。没什么。
其中一些网址只是来自其他服务的回调(不知道 IP,因此我无法根据 IP 进行排除),并且它们无法提示输入用户/密码。
当前的定义很简单:
AuthName "Please login."
AuthGroupFile /dev/null
AuthType Basic
AuthUserFile /xxx/.htpasswd
require valid-user
最佳答案
使用SetEnvIf ,您可以在请求以某个路径开头时创建一个变量,然后使用 Satisfy Any
指令以避免登录。
# set an environtment variable "noauth" if the request starts with "/callbacks/"
SetEnvIf Request_URI ^/callbacks/ noauth=1
# the auth block
AuthName "Please login."
AuthGroupFile /dev/null
AuthType Basic
AuthUserFile /xxx/.htpasswd
# Here is where we allow/deny
Order Deny,Allow
Satisfy any
Deny from all
Require valid-user
Allow from env=noauth
允许/拒绝指令 block 表示拒绝所有人的访问,除非存在有效用户(成功的 BASIC 身份验证登录)或noauth
变量已设置。
关于apache - htaccess 从基本身份验证中排除一个 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8978080/