htaccess密码保护但不在localhost上

时间:2010-12-01 11:31:36

标签: apache .htaccess localhost

我已经设置了一个开发网站并希望对其进行密码保护,因此只有经过验证的访问者才能查看该网站。一切都很好。我很生气,在我的本地版本上输入我的用户名和密码。因此,在不更改本地副本与开发站点之间的htaccess文件的情况下,如何使用密码保护站点,但无需输入用户名和密码即可自行访问?

6 个答案:

答案 0 :(得分:15)

这样的事情应该可以解决问题..

Require valid-user
Allow from 127.0.0.1
Satisfy Any

来自:http://httpd.apache.org/docs/2.0/mod/core.html#satisfy

答案 1 :(得分:4)

我已经找到了一种从Windows密码文件中分离Linux的一种很酷的方式(因为我在Windows中开发然后发布到Linux生产服务器)。

我刚用phpinfo()写了一个php脚本;在我们的本地和prod服务器上,找到了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

答案 2 :(得分:1)

假设您可以在开发站点上输入密码 - 将auth指令放在开发站点而不是.htaccess文件中的VirtualHost中 - 这样您的auth将在服务器级别而不是目录级别进行处理

此外,大多数现代浏览器可能会为您保存密码:)

答案 3 :(得分:1)

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 :(得分:0)

正如所讨论的here,您可以使用allow from来允许来自特定主机的访问。

答案 5 :(得分:0)

自Apache 2.4起,您还可以通过检查HTTP_HOST环境变量来保护您的密码保护:

<If "%{HTTP_HOST} != 'localhost'">
    # Your password protection code
</If>

另见Mark Fox对accessing the environment variables的问题的回答。