gpt4 book ai didi

.htaccess - htaccess 中域名特定的代码块

转载 作者:行者123 更新时间:2023-12-03 03:23:41 25 4
gpt4 key购买 nike

我们有本地服务器、中央开发、登台和生产服务器。然而,由于显而易见的原因,开发和登台受到密码保护。因此,在对 htaccess 进行任何更改后,我必须手动编辑 htaccess 文件以在开发和登台服务器上启用密码保护。

有没有办法根据域名进行条件 block ,例如:

if ( $domain == "dev.example.com" || $domain == "staging.example.com" ){
AuthName "Password Protected Area"
AuthType Basic
AuthUserFile /somewhere/.htpasswd
Require valid-user
}

我需要找到与该条件等效的 htaccess:

if ( $domain == "dev.example.com" || $domain == "staging.example.com" ){

}

非常感谢你们能够提供的任何帮助或指示。

最佳答案

虽然通过 VirtualHost 而不是 .htaccess 来完成此操作要好得多,但如果 setenvif 模块处于事件状态,您可以使用以下解决方案:

SetEnvIf Host ^dev\.site\.com$ is_on_dev_site
SetEnvIf Host ^staging\.site\.com$ is_on_dev_site
Order deny,allow
Deny from env=is_on_dev_site
# require password if access would otherwise be denied
Satisfy any
# Put your password auth stuff here

您还可以使用白名单,这可能会更好,因为它可以确保您的开发网站仍然受到保护,即使有人决定允许通过 www.dev.site.com 等访问它们:

SetEnvIf Host ^site\.com$ is_on_public_site
SetEnvIf Host ^www\.site\.com$ is_on_public_site
Order deny,allow
Deny from all
Allow from env=is_on_public_site
Satisfy any
# Put your password auth stuff here

如果您的服务器上没有 mod_setenvif,mod_rewrite 也可以为您完成这项工作(将白名单示例中的 SetEnvIf block 替换为以下内容):

RewriteEngine On
RewriteCond %{HTTP_HOST} =site.com
RewriteRule ^ - [E=is_on_public_site:yes]
RewriteCond %{HTTP_HOST} =www.site.com
RewriteRule ^ - [E=is_on_public_site:yes]

关于.htaccess - htaccess 中域名特定的代码块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4068975/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com