.htaccess只对一个子目录进行身份验证

时间:2017-07-04 01:05:29

标签: php apache .htaccess mod-rewrite subdirectory

我有一个.htaccess文件,它在我网站的每个页面上请求登录凭据。 .htaccess仅位于我的dev文件夹中。然而,每当我去我的网站(不是开发者)时,我仍然要求登录凭证。

我想要的是什么:要在我的dev子目录中只有.htaccess请求密码。例如,当我访问dev.mywebsite.com时,我将被要求提供登录凭据。

  • 这是我的直播网站/ www / live_website
  • 的文件路径
  • 这是我的开发网站/ www / live_website / dev
  • 的文件路径

(.htaccess文件仅存在于/ www / live_website / dev中)

这是我的.htaccess的样子:

AuthUserFile /www/live_website/dev/.htpasswd
AuthType Basic
AuthName "Please login"
Require valid-user

UPDATE:解决

我通过编辑我的.htaccess解决了这个问题。如需完整的浏览,请参阅下面我对Capsule的回复或下面的答案。

RewriteEngine on
RewriteCond %{HTTP_HOST} ^dev.mywebsite.com
RewriteRule ^(.*)$ http://mywebsite.com/dev/$1 [L,NC,QSA]

SetEnvIf Request_URI ^/dev require_auth=true

# show Basic auth dialogue only when SHOW_AUTH is set
AuthType Basic
AuthUserFile /www/live_website/dev/.htpasswd
AuthName “Please login“

# 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

1 个答案:

答案 0 :(得分:0)

我通过将子域名从dev.mywebsite.com更改为重定向到mywebsite.com/dev来解决此问题,然后在重定向时请求.htaccess请求登录凭据。

我的dev文件夹中的新.htaccess文件。

    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^dev.mywebsite.com
    RewriteRule ^(.*)$ http://mywebsite.com/dev/$1 [L,NC,QSA]

    SetEnvIf Request_URI ^/dev require_auth=true

    # show Basic auth dialogue only when SHOW_AUTH is set
    AuthType Basic
    AuthUserFile /www/live_website/dev/.htpasswd
    AuthName “Please login“

    # 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