Подтвердить что ты не робот

.htaccess. deny root, разрешить определенную подпапку. Возможное?

Как я могу запретить доступ к http://sub.mydomain.com/, но разрешить (полностью) http://sub.mydomain.com/test (или http://sub.mydomain.com/test/)

На задней панели есть magento back http://sub.mydomain.com/test/

4b9b3361

Ответ 1

.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

Ответ 2

Как насчет . 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/' присутствует, перенаправление не происходит...

Ответ 3

Попробуйте создать файл .htaccess в sub.mydomain.com для deny и в sub.mydomain.com/test для allow.

Или вы можете перенаправить из http://sub.mydomain.com/, чтобы отклонить subdir.

Ответ 4

Я знаю, что это очень старая тема, но я боролся именно с этим сценарием в течение нескольких дней и, наконец, заставил его работать, поэтому я решил поделиться своим решением для дальнейшего использования.

Начиная с 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>