htaccess 密码保护但不在本地主机上
Posted
技术标签:
【中文标题】htaccess 密码保护但不在本地主机上【英文标题】:htaccess password protect but not on localhost 【发布时间】:2011-05-18 10:56:10 【问题描述】:我已经建立了一个开发站点,并希望对其进行密码保护,以便只有经过验证的访问者才能查看该站点。一切都很好。我很恼火,在我的本地版本上,输入我的用户名和密码。那么,在不更改我的本地副本和开发站点上的 htaccess 文件的情况下,我如何通过密码保护站点但无需输入用户名和密码就可以访问?
【问题讨论】:
【参考方案1】:这样的事情应该可以解决问题..
Require valid-user
Allow from 127.0.0.1
Satisfy Any
发件人:http://httpd.apache.org/docs/2.0/mod/core.html#satisfy
【讨论】:
不知道为什么,但是当我使用它时,身份验证完全失效,让任何人都可以看到受保护的区域......我的意思是它可以在我的开发站点上正常工作,因为我的 IP 是 127.0.0.1 ,但是当我将它发布到实时服务器时,它仍然只是让我进入......不知道为什么。【参考方案2】:我找到了一种将 Linux 与 Windows 密码文件分开的好方法(因为我在 windows 中开发,然后发布到 linux 生产服务器)。
我刚刚用phpinfo()写了一个php脚本;在我们的本地和产品服务器上,找到了 apache 模块“mod_win32”来分隔它们。
<IfModule mod_win32.c>
AuthUserFile C:\xampplite\your\windows\path.passwd
</IfModule>
<IfModule !mod_win32.c>
AuthUserFile "/your/linux/path/.passwd"
</IfModule>
AuthName "Please Login"
RewriteEngine On
AuthType Basic
Require valid-user
【讨论】:
【参考方案3】:Windows 示例:
AuthType Basic
AuthName "Password Protected Area"
AuthUserFile C:/Apache24/htdocs/.htpasswd
Require valid-user
Order allow,deny
Allow from localhost
Allow from 127.0.0.1
Satisfy Any
【讨论】:
【参考方案4】:假设您可以在开发站点上输入密码 - 将 auth 指令放在开发站点上的 VirtualHost 而不是 .htaccess 文件中 - 这样您的身份验证将在服务器级别而不是目录级别进行处理.
此外,大多数现代浏览器可能会为您保存密码 :)
【讨论】:
【参考方案5】:正如here 所讨论的,您可以使用allow from
来允许从特定主机进行访问。
【讨论】:
【参考方案6】:从 Apache 2.4 开始,您还可以通过检查 HTTP_HOST 环境变量来围绕密码保护,如下所示:
<If "%HTTP_HOST != 'localhost'">
# Your password protection code
</If>
另请参阅 Mark Fox 对accessing the environment variables 问题的回答。
【讨论】:
以上是关于htaccess 密码保护但不在本地主机上的主要内容,如果未能解决你的问题,请参考以下文章