如何在使用SVN时使用密码保护开发但不上线?

2022-08-30 18:50:49

我们有这个工作流程:开发是在 dev.example.com 更改提交到SVN,然后导出到实时站点上完成的。实时站点位于 www.example.com

我想用密码保护 dev.example.com,但是如果我使用.htaccess做到这一点,我们将在实时站点使用相同的.htaccess,它也将受到密码保护。

我们正在使用Dreamhost共享主机,我有SSH访问权限,但我无法编辑Apache的配置.conf文件。

我们不希望为dev&live提供单独的.htaccess文件,也不想在SVN中忽略.htaccess,因为更新也会对.htaccess进行。

那我该怎么办呢?


答案 1

如果在服务器上启用了 ,则可以将其添加到文件中:mod_setenvif.htaccess

SetEnvIfNoCase ^HOST$ .+ unauthenticated
SetEnvIfNoCase ^HOST$ ^dev\.example\.com$ !unauthenticated

AuthType Basic
AuthName "Secured"
AuthUserFile /path/to/.htpasswd
Require valid-user
Order allow,deny
Allow from env=unauthenticated
Satisfy any

这基本上是它设置一个名为“unauthenticated”的环境变量,但如果HOST(浏览器请求的主机)完全“dev.example.com”,则取消设置它。在 Directory 指令中,“满足任何一个条件”告诉 Apache 如果满足任何一个条件,则允许该请求。这意味着在“dev.example.com”上,不会设置环境变量,因此,您将需要密码。对于任何其他主机,将设置该变量,以便Apache不会要求提供凭据。


答案 2

您可以忽略 ,将其完全排除在存储库之外。然后,只需在每个服务器上有两个不同的文件。因为它们被忽略,所以它们不会在SVN更新中被覆盖。.htaccess.htaccess


推荐