.htaccess:允许来自本地networking的所有连接,但需要login外部

注意:这不是重复的,因为标记的post涉及旧版本的apache。 我已经尝试了该线程中的解决scheme,也是应该在更高版本上工作的解决scheme,但没有成功。

有几个问题和答案涉及到这个部分,但我还没有find这种types的情况。

我有一个网站,我想从我的10.0.0.0networking公开访问。 但是,当通过在路由器转发的外部地址访问它 – 我想.htaccess需要login。

我知道如何要求所有连接的密码,我有一个关于允许/禁止一个特定的地址或IP的想法。 但是我希望所有不在局域网上的IP都需要login/密码。

更新:Apache2版本2.2.22

以下是当我从答案中尝试解决scheme时发生的情况,有人声称这是重复的:

AuthName "Authenticate" AuthType Basic AuthUserFile "/home/frank/.htpassword" Require valid-user Order allow,deny Allow from 10.0.0.44 Satisfy All 

使用上面的.htaccess文件,通过外部地址访问被拒绝,句点。 没有login提示。 从特定的本地IP(.44),我得到login提示。

 AuthName "Authenticate" AuthType Basic AuthUserFile "/home/frank/.htpassword" Require valid-user Order allow,deny Allow from 10.0.0.0/8 Satisfy All 

有了以上内容,外部和内部连接都会提示login。

试图缩小问题的范围:

这是行不通的:(外部LAN地址都是允许的)

 Order Deny,Allow Deny from all Allow from 10.0.0.0/8 

这个工作:(外部地址访问被拒绝,而局域网不)

 Order Deny,Allow Deny from all Allow from 10.0.0.44 

更新:我在这里错过了一些基本的东西?

当我尝试这个:

 Order Deny,Allow Deny from all 

一切都被拒绝,无论是从局域网和外部地址。

但是,当我尝试这个:

 Order Deny,Allow Allow from 127.0.0.1 

一切都是允许的,无论是从局域网和外部地址。

我试图从永恒的地址访问的方式是问题吗? 域“mydomain.no”的域名服务器指向路由器。 我已经转发路由器的虚拟服务器中的域“mydomain.no”。 端口80上的stream量被路由到运行apache2安装的服务器。 我想要的是所有通过地址“mydomain.no”(和任何其他域转发到同一台服务器)的stream量需要密码。 局域网内的stream量不需要密码。

我假设你使用的Apache 2.4,对于Apache 2.2的语法是不同的。

您可以添加多个Require指令:

 AuthName "Authenticate" AuthType Basic AuthUserFile "/var/www/html/.htpasswd" <RequireAny> Require valid-user Require ip 10.0.0 </RequireAny> 

从技术上讲,你甚至不需要<RequireAny> ,当不存在的时候,apache会隐式地使用它,但是我发现这样更容易阅读。

相当于apache 2.2:

 AuthName "Authenticate" AuthType Basic AuthUserFile "/var/www/html/.htpasswd" Require valid-user Order allow,deny Allow from 10.0.0 Satisfy any 

删除了我自己的答案,因为这是不正确的,并可能混淆了其他人问同样的问题。