【发布时间】:2016-10-17 14:06:49
【问题描述】:
我的 .htaccess 文件中有以下代码
AuthUserFile ./.htpasswd
AuthGroupFile /dev/null
AuthName "Dev Area One"
AuthType Basic
<Limit GET>
require valid-user
</Limit>
这会导致 500 内部服务器错误,因为 Apache 说它找不到文件 /etc/apache2/.htpasswd。那是因为 .htpasswd 位于目录 /var/www/html/dev1.staging.com/public_html/.htpasswd 中,而我的 .htaccess 位于 /var/www/html/dev1.staging.com/public_html/.htaccess 中。
我可以用AuthUserFile SOMEVARIABLE+.htpasswd 替换AuthUserFile ./.htpasswd,这样每次其他团队成员对他们的开发服务器执行git pull origin master 时,.htaccess 将正确引用应该与 .htaccess 位于同一目录中的 .htpasswd ?
这纯粹是为了开发目的。有一些服务器(其中一些是共享主机)我们没有文件写入权限,所以我们不能立即知道我们的 Web 项目是从哪个目录提供服务的,所以我们不能提前知道绝对.htpasswd 的目录路径。
【问题讨论】:
-
使用 .htpasswd 文件的绝对路径。为什么你不能这样做?
-
@PanamaJack 如何确定绝对路径?我在客户端服务器上没有 SFTP 或 shell。并且客户端拒绝手动修改其暂存服务器上的任何文件。
-
老兄,你已经拥有它了。
AuthUserFile /var/www/html/dev1.staging.com/public_html/.htpasswd试试吧。我使用完整路径,它总是对我有用。 -
@PanamaJack 那只是我的服务器。这不会是我们客户端服务器上的路径。而且我们的客户在将他们的目录结构暴露在服务器上时并不合作。他们说“只需将您的更改从 git dev 分支合并到 master 分支,我们的代码将自动部署到我们的服务器。不要再向我们询问有关我们服务器的任何问题,因为您不应该知道它。”。
-
我明白了。我不明白这是另一台服务器。那么也许他们那时就不需要帮助了。 :) 然后让他们在 .htaccess 文件中更改他们的路径。