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 密码保护但不在本地主机上的主要内容,如果未能解决你的问题,请参考以下文章

.htaccess 在本地主机上不起作用(manjaro)

cors 在本地主机上工作,但不在生产上

“Object [object Object] has no method”错误在线但不在本地主机上!为啥?

API调用代码在本地主机上工作但不在服务器上

本地主机上的 Grafana“用户名或密码无效”

appengine python`PUT/DELETE`在本地主机上工作但不在服务器上