我在开发服务器上有一个基本身份验证设置。它是在我的httpd.conf
文件中为网站的 VirtualHost 设置的。我不得不将其设置为排除某些目录,这没有造成任何问题并且一切正常。
问题在于排除了通过我在文件mod_rewrite
中的规则的 URL。.htaccess
我的设置是让所有 URL 都通过我的index.php
文件,并从那里找到并运行相关代码。/businesses/upload_logo
我尝试像其他人一样添加我想要排除的 URL ( ),但它仍然需要身份验证。这是我目前拥有的:
...
<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 ...
,但我想看看它是否可以先通过这种方式修复。
- 还不想这样做,因为我只希望在 3 台服务器之一上进行身份验证。我知道我可以使用更多
mod_rewrite
规则:
...
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php [L,QSA]