我有一个域mattpotts.com
,并为我开发了一个子域dev.mattpotts.com
,然后在准备好时将文件复制到正常域。< / p>
我的目录结构如下,dev.mattpotts.com
指向dev/
+-public_html/ +-project1/ +-project2/ +-project3/ +-dev/ +-project1 +-project2 +-project3
我基本上希望能够通过添加http://mattpotts.com/project1
从https://dev.mattpotts.com/project1
转到dev.
。
我在.htaccess
中有以下dev/
并且它有效,所有这些都需要强制https。
RewriteEngine On RewriteCond %{SERVER_PORT} 80 RewriteCond %{REQUEST_URI} dev RewriteRule ^(.*)$ https://dev.mattpotts.com$1 [R,L]
我想强制https,以便我可以安全地在目录上使用http auth。但是,当我将它与以下规则结合使用时,它不起作用。我已经设置了.htpasswd
,但我还没有登录表单显示。
AuthType Basic AuthName "Dev Protected Area" AuthUserFile .htpasswd Require valid-user
如何成功合并 .htaccess
规则?
编辑,非常奇怪的事情正在发生!
https://dev.mattpotts.com/project1/显示'你好!'来自非开发版网站(注释https) http://dev.mattpotts.com/project1/显示'hello dev!' (根据需要)来自开发版。这是怎么回事?!
答案 0 :(得分:0)
这些问题应该相互独立:我是否正确理解“强制HTTPS”部分有效?
那就是说,AuthUserFile .htpasswd
可能在错误的地方寻找.htpasswd。最简单的解决方法是将完整路径和名称放在那里,例如AuthUserFile /home/matt/www/public_html/dev/.htpasswd
(或者您拥有dev目录的任何地方)。
答案 1 :(得分:0)
您已告诉我们.htaccess
文件的位置,但您没有告诉我们.htpasswd
文件的位置。根据{{3}}上的Apache文档:
语法: AuthUserFile 文件路径
文件路径是用户的路径 文件。如果不是绝对的(即,如果 它不是以斜线开头的,它是 相对于
ServerRoot
处理。
换句话说,它正在.htpasswd
之类的地方寻找/etc/apache2/.htpasswd
。因此,要么将.htpasswd
文件移动到那里,要么使指令包含文件的绝对路径,例如:
AuthType Basic
AuthName "Dev Protected Area"
AuthUserFile /home/mattpots.com/public_html/dev/.htpasswd
Require valid-user
但是,出于安全原因,我强烈建议您将.htpasswd
文件保留在文档根目录之外。