-->

如何使基本身份验证排除重写URL(How to make Basic Auth exclude a

2019-07-05 20:56发布

我有一个发展服务器上的基本身份验证设置。 这是我的内部设置httpd.conf为网站的虚拟主机文件。 我不得不建立它排除某些目录,这已经引起没有问题,一切工作正常。

这个问题已经与不包括已经通过我的一个URL mod_rewrite规则中.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>
....

我发现有类似地雷的问题在这里和这里 ,但答案只给我什么,我已经开始尝试。

我已经想到了可能的其他解决方案为好,但这些将是不得已而为之的事情。 我想看看是否有可能我目前做的方式:

  • 建立了基本身份验证我的PHP代码中,而不是
    • 目前太多的麻烦
  • 把认证在我.htaccess文件,而不是
    • 不想,我只想在认证上的3台服务器一个碰巧做到这一点,只是还没有。 我知道,我可以使用一些更SetEnvIf HOST ...但我想看看是否可以先固定这样还是不行。

mod_rewrite规则:

...

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

Answer 1:

尝试添加

Allow from env=REDIRECT_noauth


Answer 2:

对我来说,这样的事情就像一个魅力:

<location />
        SetEnvIf Request_URI "/businesses/upload_logo" REDIRECT_noauth=1
        AuthType Basic
        AuthName "Restricted Files"
        AuthUserFile /etc/httpd/passwords/passwords
        Order Deny,Allow
        Satisfy any
        Deny from all
        Allow from env=REDIRECT_noauth
        Require user yournickname
</location>


Answer 3:

根据你给它应该工作,除非有冲突的指令别的地方在你的配置。

我已经做了类似的工作设置,只是我已经使用的文件系统路径,而不是URI的

我在这里添加它,希望你会发现它很有用

<VirtualHost *:8989 >
<IfModule mod_auth_basic.c>
 <Directory /var/www/html/vella-8989>
  # the auth block
  AuthType Basic
  AuthName "Please login."
  AuthUserFile /var/www/html/vella-8989/.htpasswd
  require valid-user

  Order Deny,Allow
  Satisfy any
  Deny from all
  Require valid-user
  Allow from env=noauth
</Directory>
</IfModule>
  # set an environtment variable "noauth" if the request has "/callbacks/"
  SetEnvIf Request_URI "/callbacks/" noauth=1
  ServerName vella.com
  ServerSignature off
</VirtualHost>


文章来源: How to make Basic Auth exclude a rewritten URL