.htaccess.Запретить root, разрешить конкретную подпапку.Возможный? - PullRequest
19 голосов
/ 04 октября 2011

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

За * есть бэкенд magento1009 *

Ответы [ 4 ]

34 голосов
/ 04 октября 2011

.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
8 голосов
/ 04 октября 2011

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

1 голос
/ 05 июня 2019

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

Начиная с 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>
1 голос
/ 04 октября 2011

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

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

...