如何使Basic Auth排除重写的URL

Jos*_*osh 12 apache authentication .htaccess mod-rewrite .htpasswd

我在开发服务器上有一个基本身份验证设置.它是在我的httpd.conf文件中为网站的VirtualHost设置的.我必须将它设置为排除某些目录,这些目录没有引起任何问题并且一切正常.

问题在于排除已通过文件中的mod_rewrite规则的URL .htaccess.我的设置是我有所有URL通过我的index.php文件,并从那里找到并运行相关的代码.我尝试添加我想要排除的URL(/businesses/upload_logo),就像我做其他人一样,但它仍然需要身份验证.这就是我目前拥有的:

...
<Location />
    SetEnvIf Request_URI "/businesses/upload_logo" noauth=1
    SetEnvIf Request_URI "/api/.*" noauth=1

    AuthType Basic
    AuthName "Private"
    AuthUserFile ****
    Require valid-user

    Order deny,allow
    Satisfy any
    Deny from all
    Allow from env=noauth
</Location>
....
Run Code Online (Sandbox Code Playgroud)

在这里这里找到了与我类似的问题,但答案只给了我正在尝试的东西.

我也想过其他可能的解决方案,但这些都是最后的选择.我想看看我现在的做法是否可行:

  • 在我的PHP代码中设置基本身份验证
    • 此刻太麻烦了
  • 将身份验证放在我的.htaccess文件中
    • 我还不想这样做,因为我只希望在3台服务器之一上进行身份验证.我知道我可以使用更多,SetEnvIf HOST ...但我想看看它是否可以这样修复或不首先修复.

mod_rewrite规则:

...

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php [L,QSA]
Run Code Online (Sandbox Code Playgroud)

Ger*_*ben 19

尝试添加

Allow from env=REDIRECT_noauth
Run Code Online (Sandbox Code Playgroud)