web-dev-qa-db-ja.com

.htaccess。ルートを拒否し、特定のサブフォルダを許可します。可能?

http://sub.mydomain.com/ へのアクセスを拒否しながら、(完全に) http://sub.mydomain.com/test (または http://sub.mydomain.com/test/

http://sub.mydomain.com/test/ の後ろにmagentoバックエンドがあります

19
V-Light

.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
34
nachito

ルートディレクトリに 。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 /」セクションが存在する場合、リダイレクトは行われません...

8
SW4

私はこれが非常に古いスレッドであることを知っていますが、私はこのシナリオに正確に数日間取り組み、ついにそれを機能させました。

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
David SN

拒否の場合はsub.mydomain.comに、許可の場合はsub.mydomain.com/testに.htaccessファイルを作成してみてください。

または http://sub.mydomain.com/ からリダイレクトして、サブディレクトリを拒否できます。

1
radeklos