如何拒绝访问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