使用.htaccess限制对Intranet的外部访问

时间:2011-02-06 11:31:19

标签: regex .htaccess mod-rewrite

我确信这是可能的,但它超出了我对.htaccess文件的微薄能力。

我们有一个内部的php应用程序,我们内部有基本的安全性,但不需要太担心。我想在网上提供工作人员外出时使用。我想基于htaccess或htpassword文件获得额外的安全性。

是否可以编写执行以下操作的htaccess文件

  • 如果用户从office.mydomain.com访问,则表示它们是内部的(office.mydomain.com解析为内部IP,如192.168.22.22),因此允许无阻碍访问
  • 如果用户从外部访问它将是external.myoffice.com - 如果这是一个额外的安全性,我想使用.htaccess和密码文件来让用户输入apache密码

有谁能告诉我如何用.htaccess文件写这个?

更新:感谢所有答案,我已经发布了对我有用的答案,以帮助他人。

4 个答案:

答案 0 :(得分:5)

您可以使用

RewriteCond %{REMOTE_ADDR} !^192\.168\.

指定外部IP的条件,或使用

RewriteCond %{REMOTE_ADDR} ^192\.168\.

了解本地IP的情况。

您只需要以明智的方式将这些内容整合到现有的htaccess规则中。

答案 1 :(得分:3)

答案 2 :(得分:2)

你去吧

order deny,allow
allow from 192.168.22.0/255.255.255.0
deny from all

您可以使用子网掩码来确保访问者来自同一网络。如果您需要寻址另一个网络,只需使用这些IP(如服务器所见)

答案 3 :(得分:2)

要完成此答案,请执行以下工作。

#allows everything if its on a certain host
SetEnvIf HOST "^www.mysite.com" external_url
SetEnvIf HOST "^localhost" local_url
Order Deny,Allow

AuthName "Restricted Area"
AuthType Basic
AuthUserFile path/to/your/.htpasswd
AuthGroupFile /
Require valid-user

#Allow valid-user
Deny from all
Allow from env=external_url
Allow from env=local_url
Satisfy any

如果您通过www.mysite.com访问,则会弹出一个限制区域登录框,但如果您来到本地,则不会显示任何内容。