apache - .htaccess 虚拟主机的基本身份验证?

标签 apache .htaccess basic-authentication .htpasswd

我想知道是否可以根据 .htaccess 文件中的虚拟主机 URL 设置有条件的 http 基本身份验证要求。

例如,我想做的是让 mysite.com 和 test.mysite.com 在同一目录中运行相同的代码库,但密码保护 test.mysite.com。它将以这种方式设置,这样我就不需要分支我的代码,因为我的应用程序代码可以看到它从哪个 vhost/url 提供服务并选择数据库来提供内容。

最佳答案

你可以通过使用 mod_setenvif 来解决这个问题。连同 mod_auth模块。使用 SetEnvIfNoCase指令设置哪个主机受密码保护。您需要一些额外的指令来满足访问权限:

# Check for the hostname here
SetEnvIfNoCase HOST ^test\.mysite\.com\.?(:80)?$ PROTECTED_HOST

然后在Directory里面阻止(或只是公开)您已经设置了身份验证内容,如下所示:
AuthUserFile /var/www/test.mysite.com/htpasswd
AuthType Basic
AuthName "Password Protected"

现在需要/满足的东西:
Order Deny,Allow
Satisfy any
Deny from all
Require valid-user
Allow from env=!PROTECTED_HOST

这将使任何不匹配的主机 ^test\.mysite\.com\.?(:80)?$无需身份验证( Allow from env=!PROTECTED_HOST )即可访问,否则,我们需要有效用户( Require valid-user )。 Satisfy any确保我们只需要 2 个中的一个,即 Allow 或 Require。

关于apache - .htaccess 虚拟主机的基本身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7334307/

相关文章:

apache - Apache Pig提供哪种文件格式?

java - 错误 : Could not find or load main class org. apache.hadoop.hdfs.server.datanode.DataNode

apache - Codeigniter URL 重定向,无需添加 index.php

linux - 在 1and1 上安装 Concrete 5 后,htaccess 列出目录文件不再起作用

apache - .htaccess 重写参数未传递到目标页面

php - 通过 Rest Api 进行 Mautic 基本身份验证

javascript - 404 图片的回退

security - htaccess 身份验证的安全性如何

java - 如何使用 Wicket (Java) 获取原始 http header (用于基本身份验证)?

Java HTTPServer 身份验证 - 客户端