web-dev-qa-db-ja.com

同じ.htaccessを使用して2つのサイトのいずれかへのアクセスを拒否する

.htaccessにアクセスしている場合、サイトへのアクセスを拒否するようにstaging.example.comファイルを設定する必要があります。

Magento 2ストアを所有しており、Capistranoを使用して展開をセットアップしました。これは、2つの別個のドメインstaging.example.comおよびexample.comに展開します。それらは同じ.htaccessファイルを持ち、IPのみでステージングサイトへのアクセスを許可します。

現在Cpanelを使用しており、vhostファイルにアクセスできません。

2
gabehou

DOCUMENT_ROOT/.htaccessファイルでこのコードのようなものを使用できます。

RewriteEngine On

RewriteCond %{HTTP_Host} ^(?:www\.)?subdomain\.com$ [NC]
RewriteCond ${ipmap:%{REMOTE_ADDR}} !^(127\.0\.0\.1|192\.168\.|10\.|1\.2\.3\.4)$
RewriteRule ^ - [F]

ソース: answer from anubhava スタックオーバーフロー

また、特定のIPアドレスを許可し、残りを拒否することもできます:

order deny,allow
allow from 31.24.232.14
allow from 127.0.0.0
allow from 192.168.0.0
deny from all

これらも役立つ場合があります。

<If "%{HTTP_Host} != 'www.example.com'">
Redirect / http://www.example.com/
</If>

この最後のものがあなたが望むものである可能性は十分にあります。コードが機能する場合、ロードされたWebサイトがexample.comではない(ただし、サブドメイン)ことを検出します。また、サブドメインの場合、許可元にリストされているものを除くすべてのIPアドレスがブロックされます。

<If "%{HTTP_Host} != 'www.example.com'">
    order deny,allow
    allow from 31.24.232.14
    allow from 127.0.0.0
    allow from 192.168.0.0
    deny from all
</If>

また試すことができます:

<If "%{HTTP_Host} = 'subdomain.example.com'">
    order deny,allow
    allow from 31.24.232.14
    allow from 127.0.0.0
    allow from 192.168.0.0
    deny from all
</If>

Apache 2.4+の場合

require ipを使用する場合は、次のようにする必要があります。

Require all denied
Require ip 123.123.123.123

続きを読む: https://stackoverflow.com/questions/37865658/htaccess-allow-deny-ip-using-require-Apache-2-4

たぶんこれは動作しますか?:

<If "%{HTTP_Host} = 'staging.example.com'">
Require all denied
Require ip 123.123.123.123
</if>

ソースは、特定のIPのみを許可するためにRequireAnyが必要であることも示しています。その場合は、サブドメインの要件条件に合わせて変更する必要があります。

<RequireAny>
Require ip 1.2.3.4
Require ip 23.34.45.56
</RequireAny>
3
Michael d