apache - 如何使基本身份验证排除重写的 URL

标签 apache .htaccess authentication 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>
....

我发现了与我类似的问题 here & here但答案只给了我我已经在尝试的东西。

我也想过其他可能的解决方案,但这些将是最后的手段。我想看看我目前的做法是否可行:
  • 在我的 php 代码中设置基本身份验证
  • 目前太麻烦
  • 将身份验证放入我的 .htaccess文件代替
  • 暂时不想这样做,因为我只想在 3 个服务器之一上进行身份验证。我知道我可以使用更多 SetEnvIf HOST ...但我想看看它是否可以先以这种方式修复。
  • mod_rewrite规则:
    ...
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule (.*) index.php [L,QSA]
    

    最佳答案

    尝试添加

    Allow from env=REDIRECT_noauth
    

    关于apache - 如何使基本身份验证排除重写的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13950207/

    相关文章:

    javascript - 为什么重定向 404 错误会导致 js 文件返回 HTML?

    python - 配置 : error: Python interpreter is too old

    .htaccess - Robots.txt、php.ini、connect_to_database.php、.htaccess

    javascript - Explorer 9 上的 html5 视频缓存

    .htaccess - 如何将 URL 参数存储在 htaccess 变量中

    PHP , MYSQL 登录后才显示网站

    对 struts2 中的每个 Action 进行身份验证

    java - java 和 servlet 的类路径

    html - 如何在 HTML Bootstrap 中将 2 个 div 居中?

    python - 在本地使用 Google Cloud Platform 客户端库时如何确定身份验证方法