使用htaccess根据域名进行限制

时间:2014-01-29 18:28:35

标签: php apache .htaccess .htpasswd

我有一个接受多个网址的应用程序,并在应用程序本身重定向它们(在PHP中)

因此,www.example.com是主要域名,www.example2014.com是次要域名,应用程序在内部处理www.example.com/2014 /

我们添加了一个新域名,现在我们需要设置应用程序来处理它 - 添加页面和内容等等。

如何使用用户名和密码在我的htaccess文件中限制www.example2014.com,直到该应用的新子目录可供公众使用?

2 个答案:

答案 0 :(得分:2)

您可以在mod_authz中使用SetEnvIfSatisfy Any

SetEnvIfNoCase HOST ^www\.example2014\.com(:80)?$ PROTECTED_HOST

AuthUserFile /var/www/htpasswd
AuthName "Password Protected"
AuthType Basic
Order Deny,Allow
Satisfy any
Deny from all
Require valid-user
Allow from env=!PROTECTED_HOST

如果请求的主机为www.example2014.com,则设置环境变量“PROTECTED_HOST”,如果未设置“PROTECTED_HOST”,则auth设置允许所有请求绕过密码保护

答案 1 :(得分:1)

如果您使用的是httpd 2.2,那么Jon Lin's答案就可以了。

但如果您使用2.4,那么我建议使用access control has been entirely redesigned之后的以下内容。

AuthUserFile /var/www/htpasswd
AuthName "Password Protected"
AuthType Basic
<RequireAny>
  Require expr %{HTTP_HOST} =~ /^www\.example2014\.com(:80)?$/i
  Require valid-user
</RequireAny>

从技术上讲,RequireAny块是不必要的,因为不在容器中的Require指令的默认行为就像它们在RequireAny块中一样,但它只是使它更容易读取。