2016-08-08 4 views
1

私は次の.htaccessを持っている以外のドメインからのすべてのことができます。 www.livedomain.comで誰もがアクセスしたい。 www.stagingdomain.comでは、私はIP 1.1.1.1、2.2.2.2、3.3.3.3にアクセス権を持たせたいだけです。複雑なApacheのリミット/ SetEnvIfディレクティブは、IP

これは問題なく動作します。

ライブサイトで、を除く)を許可するように変更したいと思います(9.9.9.9としましょう)。

私はこのような何かやってみました:

<Limit GET POST> 
    SetEnvIf Host www.livedomain.com allow 
    SetEnvIf Remote_Addr 9.9.9.9 deny 
    SetEnvIf Remote_Addr 1.1.1.1 allow 
    SetEnvIf Remote_Addr 2.2.2.2 allow 
    SetEnvIf Remote_Addr 3.3.3.3 allow 
    Order deny,allow 
    Deny from all 
    Allow from env=allow 
</Limit> 

をしかし、これは動作しません。私はenv変数が '拒否'で上書きされたと考えていたでしょうし、最後のAllowステートメントは適用されませんでした。これは当てはまりませんか?

この場合、1つのIP以外のすべてのドメインを許可する最も簡単な方法は何ですか?

答えて

1

あなたが設定解除に!varnameを使用するか、すでに定義された変数を削除する必要があります。

<Limit GET POST> 
    SetEnvIf Host www.livedomain.com allow 
    SetEnvIf Remote_Addr 9.9.9.9 !allow 
    SetEnvIf Remote_Addr 1.1.1.1 allow 
    SetEnvIf Remote_Addr 2.2.2.2 allow 
    SetEnvIf Remote_Addr 3.3.3.3 allow 
    Order deny,allow 
    Deny from all 
    Allow from env=allow 
</Limit> 

Read more about SetEnvIf here

+1

ああ素敵な、ありがとう君は! –

0

私のconfが少し異なっていますが、期待通りに動作します:

SetEnvIf Host staging.mydomain.tld passreq 
SetEnvIf Remote_Addr 1.1.1.1 !passreq 
AuthType Basic 
AuthName "Password Required" 
AuthUserFile /home//html/.htpasswd 
Require valid-user 
Order allow,deny 
Allow from all 
Deny from env=passreq 
Satisfy any 
関連する問題