. htaccess.拒绝根目录,允许特定子文件夹.可能的


.htaccess. deny root, allow specific subfolder. Possible?

如何拒绝访问http://sub.mydomain.com/,但允许(完全)http://sub.mydomain.com/test(或http://sub.mydomain.com/test/)

http://sub.mydomain.com/test/后面有一个magento后端

。htaccess指令适用于该目录及其所有子目录,所以你应该禁止在你的DocumentRoot,

http://sub.mydomain.com/.htaccess:

Order deny,allow
Deny from all

并在您想要访问的任何特定子目录中重写它,

http://sub.mydomain.com/test/.htaccess:

Order allow,deny
Allow from all

在根目录下创建一个.htaccess怎么样?

RewriteEngine On
# check if request is for subdomain
RewriteCond %{HTTP_HOST} ^sub.mydomain.com$ [NC]
# check if  'test' isnt part of request
RewriteCond %{REQUEST_URI} !^/test/?(.*)$ [NC]
# if subdomain and no 'test' part, redirect to main domain...
RewriteRule ^(.*)$ http://www.mydomain.com/$1 [R,L]

因此,如果'/test/'部分存在,则不会发生重定向…

尝试在sub.mydomain.com中创建。htaccess文件来拒绝,在sub.mydomain.com/test中创建。

或者您可以从http://sub.mydomain.com/重定向到拒绝subdir

我知道这是一个非常古老的线程,但是我已经用这个场景构建了好几天,终于让它工作了,因此我想我会分享我的解决方案供进一步参考。

作为Apache版本2.4(我猜),可以使用指令<RequireAll><RequireAny>。这可以用来允许访问特定的子文件夹。

我的解决方案。htaccess(灵感来自这个网站:https://www.the-art-of-web.com/system/apache-authorization/):

SetEnvIf REQUEST_URI "^/test/.*" PUBLICACCESS
# Use for multiple subfolders:
# SetEnvIf REQUEST_URI "^/(?:test|test2|test3|test4)/.*" PUBLICACCESS
<RequireAny>
    <RequireAll>
        # Public access
        Require env PUBLICACCESS
        Require all granted
    </RequireAll>
    <RequireAll>
        # Require user and password
        AuthType Basic
        AuthName "Secured"
        AuthUserFile /var/www/example.com/.htpasswd
        Require valid-user
    </RequireAll>
</RequireAny>

我使用的是cpanel驱动的服务器,它将添加。htaccess条目,如下所示:

#----------------------------------------------------------------cp:ppd
# Section managed by cPanel: Password Protected Directories     -cp:ppd
# - Do not edit this section of the htaccess file!              -cp:ppd
#----------------------------------------------------------------cp:ppd
AuthType Basic
AuthName "Protected"
AuthUserFile "/home/****/.htpasswds/sites/****/passwd"
Require valid-user
#----------------------------------------------------------------cp:ppd
# End section managed by cPanel: Password Protected Directories -cp:ppd
#----------------------------------------------------------------cp:ppd

我想允许访问一个特定的子文件夹,解决方案是在该子文件夹中创建一个。htaccess文件,并在其中放置以下内容:

Satisfy any

如果您已经通过Auth保护了DocumentRoot,那么您可以允许您的子文件夹如下:

http://sub.mydomain.com/test/.htaccess:

require all granted
Order allow,deny
Allow from all