我有一个接受多个网址的应用程序,并在应用程序本身重定向它们(在PHP中)
因此,www.example.com是主要域名,www.example2014.com是次要域名,应用程序在内部处理www.example.com/2014 /
我们添加了一个新域名,现在我们需要设置应用程序来处理它 - 添加页面和内容等等。
如何使用用户名和密码在我的htaccess文件中限制www.example2014.com,直到该应用的新子目录可供公众使用?
答案 0 :(得分:2)
您可以在mod_authz中使用SetEnvIf
和Satisfy 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
块中一样,但它只是使它更容易读取。