Apache .htaccess(如果目录存在)

Apache .htaccess(如果目录存在),apache,.htaccess,Apache,.htaccess,我有一个开发服务器和一个实时服务器。两者都使用相同的.htaccess,但我希望开发服务器受到密码保护。当我将.htaccess文件复制到live时,我得到一个500错误。htaccess是否提供了一些仅使用IF之类的条件对目录进行密码保护的方法 我使用的是: <Directory "/home/my/path/to/development/site/"> AuthName "Restricted Area 52" AuthType Basic AuthUserFil

我有一个开发服务器和一个实时服务器。两者都使用相同的.htaccess,但我希望开发服务器受到密码保护。当我将.htaccess文件复制到live时,我得到一个500错误。htaccess是否提供了一些仅使用IF之类的条件对目录进行密码保护的方法

我使用的是:

<Directory "/home/my/path/to/development/site/">
  AuthName "Restricted Area 52" 
  AuthType Basic 
  AuthUserFile /home/my/path/to/development/site/.htpasswd 
  AuthGroupFile /dev/null 
  require valid-user
</Directory>

AuthName“禁区52”
AuthType Basic
AuthUserFile/home/my/path/to/development/site/.htpasswd
AuthGroupFile/dev/null
需要有效用户
确实需要一些帮助。

在htaccess文件中不能有
容器,但可以根据环境变量有条件地打开或关闭HTTP auth

例如,假设您的生产站点是
http://production.example.com
而您的开发站点是
http://dev.example.com
然后您可以对照HTTP主机进行检查并设置环境变量:

SetEnvIfNoCase Host ^dev\.example\.com$ require_auth=true
或者,如果路径不同,则说明您的生产站点是
http://example.com/
和开发人员站点是
http://example.com/dev/
,然后您可以对照请求的URI进行检查:

SetEnvIfNoCase Request_URI ^/dev/ require_auth=true
您还可以进行一些其他检查,如中所述。无论哪种方式,当请求开发时,您都希望设置
require\u auth=true
。然后您可以设置您的auth内容以使用
满足任何要求:

# Auth stuff
AuthUserFile /home/my/path/to/development/site/.htpasswd 
AuthName "Restricted Area 52"
AuthType Basic

# Setup a deny/allow
Order Deny,Allow
# Deny from everyone
Deny from all
# except if either of these are satisfied
Satisfy any
# 1. a valid authenticated user
Require valid-user
# or 2. the "require_auth" var is NOT set
Allow from env=!require_auth
因此,如果未设置
require\u auth
,则不需要任何auth,如果是开发请求,则您的
setenif
应设置它。

您不能在htaccess文件中包含
容器,但您可以根据环境变量有条件地打开或关闭HTTP auth

例如,假设您的生产站点是
http://production.example.com
而您的开发站点是
http://dev.example.com
然后您可以对照HTTP主机进行检查并设置环境变量:

SetEnvIfNoCase Host ^dev\.example\.com$ require_auth=true
或者,如果路径不同,则说明您的生产站点是
http://example.com/
和开发人员站点是
http://example.com/dev/
,然后您可以对照请求的URI进行检查:

SetEnvIfNoCase Request_URI ^/dev/ require_auth=true
您还可以进行一些其他检查,如中所述。无论哪种方式,当请求开发时,您都希望设置
require\u auth=true
。然后您可以设置您的auth内容以使用
满足任何要求:

# Auth stuff
AuthUserFile /home/my/path/to/development/site/.htpasswd 
AuthName "Restricted Area 52"
AuthType Basic

# Setup a deny/allow
Order Deny,Allow
# Deny from everyone
Deny from all
# except if either of these are satisfied
Satisfy any
# 1. a valid authenticated user
Require valid-user
# or 2. the "require_auth" var is NOT set
Allow from env=!require_auth

因此,如果未设置
require\u auth
,则不需要任何auth,如果是开发请求,您的
setenif
应该设置它。

是的,因为它是它的直接副本。是的,因为它是它的直接副本。