Как я могу запретить доступ к http://sub.mydomain.com/, но разрешить (полностью) http://sub.mydomain.com/test (или http://sub.mydomain.com/test/)
На задней панели есть magento back http://sub.mydomain.com/test/
Как я могу запретить доступ к http://sub.mydomain.com/, но разрешить (полностью) http://sub.mydomain.com/test (или http://sub.mydomain.com/test/)
На задней панели есть magento back http://sub.mydomain.com/test/
.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/' присутствует, перенаправление не происходит...
Попробуйте создать файл .htaccess в sub.mydomain.com для deny и в sub.mydomain.com/test для allow.
Или вы можете перенаправить из 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>