1

我有一个域,mattpotts.com并设置了一个子域dev.mattpotts.com供我开发,然后在准备好时将文件复制到正常域。

我的目录结构如下并dev.mattpotts.com指向dev/

+-public_html/
  +-项目1/
  +-项目2/
  +-项目3/
  +-开发/
    +-项目1
    +-项目2
    +-项目3

我基本上希望能够http://mattpotts.com/project1通过https://dev.mattpotts.com/project1添加dev..

.htaccess我有以下内容dev/并且它可以工作,所有这需要做的就是强制 https。

重写引擎开启
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} dev
重写规则 ^(.*)$ https://dev.mattpotts.com$1 [R,L]

我想强制使用 https,以便我可以在目录上安全地使用 http auth。但是,当我将它与以下规则结合使用时,它不起作用。我已经.htpasswd设置好了,但我什至还没有显示登录表单。

AuthType 基本
AuthName "开发保护区"
AuthUserFile .htpasswd
需要有效用户

如何成功地组合 .htaccess 规则集?

编辑,非常奇怪的事情正在发生!

https://dev.mattpotts.com/project1/显示“你好!” 从网站的非开发版本(注意 https) http://dev.mattpotts.com/project1/显示“hello dev!” (根据需要)来自开发版本。这里发生了什么?!

4

2 回答 2

0

这些问题应该相互独立:我是否正确理解“强制 HTTPS”部分有效?

也就是说,AuthUserFile .htpasswd可能是在错误的地方寻找 .htpasswd。最简单的解决方法是将完整路径和名称放在那里,例如AuthUserFile /home/matt/www/public_html/dev/.htpasswd(或任何你有 dev 目录的地方)。

于 2010-01-27T13:26:00.320 回答
0

您已经告诉我们您的.htaccess文件在哪里,但您没有告诉我们您的.htpasswd文件在哪里。根据AuthUserFile上的 Apache 文档:

语法: AuthUserFile文件路径

File-path是用户文件的路径。如果它不是绝对的(,如果它不以斜杠开头),则它被视为相对于ServerRoot.

所以换句话说,它正在寻找.htpasswd/etc/apache2/.htpasswd. 所以要么把你的.htpasswd文件移到那里,要么让你的指令包含文件的绝对路径,例如:

AuthType     Basic
AuthName     "Dev Protected Area"
AuthUserFile /home/mattpots.com/public_html/dev/.htpasswd
Require      valid-user

但是,出于安全原因,我强烈建议您将.htpasswd文件保存在文档根目录之外。

于 2010-01-27T13:37:03.950 回答