的.htaccess。拒绝root,允许特定的子文件夹。可能?

时间:2011-10-04 14:51:15

标签: php apache .htaccess magento

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

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

后面有一个magento后端

5 个答案:

答案 0 :(得分:34)

.htaccess指令apply to that directory, and all subdirectories thereof,因此您应该禁止在DocumentRoot中访问,

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

Order deny,allow
Deny from all

并在您希望允许访问的任何特定子目录中覆盖它,

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

Order allow,deny
Allow from all

答案 1 :(得分:8)

根目录下的.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 /'部分存在,则不会发生重定向......

答案 2 :(得分:1)

尝试在sub.mydomain.com中创建.htaccess文件以获取deny,并在sub.mydomain.com/test中尝试for。

或者您可以从http://sub.mydomain.com/重定向到拒绝子目录。

答案 3 :(得分:1)

我知道这是一个非常老的线程,但是我已经仔细研究了这种情况几天了,终于使它起作用了,因此我想分享一下我的解决方案以供进一步参考。

从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>

答案 4 :(得分:0)

我正在使用由 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