我有一个多域站点(自定义 CMS),其中所有站点都具有相同的 documentroot。根据 url(域),它将服务于不同的站点。只有 1 个根,他们也只有 1 个 .htaccess
现在我想用一个简单的 .htacess 登录来保护 1 个域(像这样)
如何指定此登录到 1 个域?
您可以使用mod_setenvif支持来仅保护您的一个域。以下是您需要在 common.htaccess
下放入的代码$DOCUMENT_ROOT
:
SetEnvIfNoCase Host ^www\.subdomain\.com$ SECURED=yes
AuthType Basic
AuthName "My Protected Area"
AuthUserFile /your/path/to/passwords
Require valid-user
Satisfy any
Order allow,deny
Allow from all
Deny from env=SECURED
上面的代码将仅显示基本身份验证弹出窗口,www.subdomain.com
同时保持其他域打开。
要启用.htpasswd
文件,您必须使用该受保护域的特定子目录。%{HTTP_HOST}
诀窍是使用基于docroot文件中的变量的基于子域的内部重定向.htaccess
,例如
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} =admin.example.com
RewriteRule ^(?!admin).* admin/$0 [L]
这将在内部重定向任何htttp://admin.example.com/
对 DOCROOT/admin 子目录的引用,该子目录可以拥有自己的文件.htaccess
和.htpasswd
文件。
您可能需要将 CMS 条目脚本和子目录符号链接回共享实例。 这就是我为 phpBB 所做的。