【发布时间】:2009-08-31 21:19:01
【问题描述】:
我有几个网站:example.com、example1.com 和 example2.com。它们都指向我服务器的 /public_html 文件夹,这是我的 Apache 根文件夹。
如果用户来自example2.com,我需要向我的.htaccess 文件添加什么才能使用http 身份验证? example.com 和 example1.com 不应使用身份验证。
我知道我需要类似的东西
AuthType Basic
AuthName "Password Required"
AuthUserFile "/path/to/.htpasswd"
Require valid-user
但我只想在用户访问example2.com 时要求输入密码。
编辑
使用答案中建议的方法,我的 .htaccess 文件中有以下内容:
SetEnvIfNoCase Host ^(.*)$ testauth
<IfDefine testauth>
RewriteRule ^(.*)$ index2.php?q=$1 [L,QSA]
</IfDefine>
我知道 mod_setenvif.c 模块已启用(我使用
【问题讨论】:
-
如果所有域都指向同一个地方,为什么只保护其中一个?如果您实际上提供不同的内容,为什么不采用更明智的方法,例如每个域一个文件夹?
-
我正在 /public_html 文件夹中运行多站点 Drupal 安装,除了该站点的正常用户登录之外,我还想在其中一个站点上创建一个全面的 http auth。
-
Drupal 的多站点允许我在同一组 PHP 文件中运行不同的网站,但使用不同的数据库(因此内容不同)。我可以在子文件夹中进行第二次安装,但这需要我维护不同的文件和模块集。
-
根据文档httpd.apache.org/docs/2.2/mod/core.html#ifdefine,IfDefine 在启动时处理。
-
ifDefine 不适用于 setenv 或 setenvif 设置的内部环境变量,仅在服务器启动时使用 -D 标志
标签: apache authentication .htaccess