ここで少し問題があります。私には、機能しないと思うこのいくつかの書き換えルールがあります。
私の主な目的は、ページを制限し、特定のIPまたはネットワークブロックのみを許可することです。
RewriteEngine On
RewriteLog "/data/wre/var/logs/modrewrite.log"
RewriteLogLevel 5
RewriteCond %{REMOTE_ADDR} !^192\.168\.10\..*
RewriteCond %{REMOTE_ADDR} !^72\.139\.201\..*
RewriteCond %{REMOTE_ADDR} !^129\.233\.4\..*
RewriteCond %{REMOTE_ADDR} !^208\.118\.97\32
RewriteRule ^/solutions https://example.com/account/signin?go=outside [R,NE,NC]
これをもう一度テストしましたが、機能しないようですか?私は何か間違ったことをしましたか?
これを試して:
RewriteEngine On
RewriteLog "/data/wre/var/logs/modrewrite.log"
RewriteLogLevel 5
RewriteCond %{REMOTE_ADDR} ^192\.168\.10\..* [OR]
RewriteCond %{REMOTE_ADDR} ^72\.139\.201\..* [OR]
RewriteCond %{REMOTE_ADDR} ^129\.233\.4\..* [OR]
RewriteCond %{REMOTE_ADDR} ^208\.118\.97\.32
RewriteRule ^/solutions https://example.com/account/signin?go=outside [NE,NC,R=301]
複数のRewriteCondディレクティブは暗黙的にANDされることに注意してください。代わりに、それらをORする必要があるかどうかを指定する必要があります。ブラウザにリダイレクトを記憶させたい場合は、永続的なリダイレクトを指定すると、将来の処理を節約できる可能性があります。
構成によっては、既知の良好な範囲を指定して、他のすべてのユーザーにリダイレクトする方が簡単な場合があります。外国人のリダイレクトに関する書き直しマニュアルから: Apache Manual
RewriteEngine on
RewriteCond %{REMOTE_Host} !^.+\.ourdomain\.com$
RewriteRule ^/solutions https://example.com/account/signin?go=outside [NE,NC,R=301]
インターネット内のいくつかのIP範囲を除いて、すべてが到達できるカーテン(サインインウォール、ペイウォール、またはメンテナンスカーテンなど)を作成しているようです。
これは、そのような構成を作成するために私が行ったことです。
# This implements a maintenance curtain; only these three IPs
# can look behind the curtain. Note its useful to allow the box
# itself too.
#
RewriteEngine On
RewriteCond %{REMOTE_ADDR} !127.0.0.1
RewriteCond %{REMOTE_ADDR} !123.234.45.6
RewriteCond %{REMOTE_ADDR} !123.234.45.78
RewriteCond %{REQUEST_URI} !^/maintenance-curtain/.*
RewriteRule / / [L,R=503]
ErrorDocument 503 /maintenance-curtain/index.html
ProxyPass /maintenance-curtain !
Alias /maintenance-curtain /var/www/maintenance-curtain
そして、それはあなたのものと非常に似ています。最初に1つのIPだけで単純化してテストすることをお勧めします。残りの構成がかなり複雑な場合は、邪魔になる可能性があるため、これをより小さなコンテキストで証明するか、構成の早い段階で移動してみてください。仮想ホストが邪魔になっていますか。構成を複製する必要がありますか(必要な場合はInclude
を使用してください)。
ただし、他のモジュールが有効になっていない場合にREMOTE_ADDRのような設定が行われないことがわかっていると思いますが、その動作を確認してからしばらく経ちました... cgi_moduleは有効になっていますか?
Prix、私は実際にこれをフォローしています。
http://www.the-art-of-web.com/system/rewrite/
Conversely, you may want to allow only certain IP addresses to access the site:
RewriteCond %{REMOTE_ADDR} !^12\.34\.56\.78$
RewriteCond %{REMOTE_ADDR} !^87\.65\.43\.21$
RewriteCond %{REQUEST_URI} !^sorry\.html
RewriteRule .* /sorry.html
Translation:
IF their IP address is not 12.34.56.78
AND their IP address is not 87.65.43.21
AND the request is not for sorry.html
THEN display the sorry.html page
この2は、VirtualHost
またはDirectory
のいずれかに設定して解決する必要があります。
RewriteLog "/data/wre/var/logs/modrewrite.log"
RewriteLogLevel 5
あなたはこのようにあなたが望むものを試すことができます:
RewriteCond %{REMOTE_ADDR} ^192\.168\.10\. [OR]
RewriteCond %{REMOTE_ADDR} ^72\.139\.201\. [OR]
RewriteCond %{REMOTE_ADDR} ^129\.233\.4\. [OR]
RewriteCond %{REMOTE_ADDR} ^208\.118\.97\.32$
これは次のように解釈されます:
あなたが何をしたいのか誤解しているかもしれませんが、あなたが何をしようとしているのか理解できれば、あなたは信じられないほど複雑な方法でやっているように見えます。
サイト全体またはディレクトリ全体を対象としている場合は、必要に応じて、virtualhostスタンザのディレクトリでallowディレクティブを使用しないのはなぜですか?
http://httpd.Apache.org/docs/2.2/mod/mod_authz_Host.html#allow
そして、403エラーページをsorry.htmlに設定します http://httpd.Apache.org/docs/2.2/mod/core.html#errordocument
だから次のようなもの:
<directory "/path/to/content/" >
Order Allow,Deny
Allow 192.168.0.0/255.255.0.0 # allow everyone from the 192.168.0.0/255.255.0.0 network
# every one else gets denied (default for stuff that has not matched is to the
# last clause of the Order directive
# the error document for a 403 (forbidden) is the sorry.html page
ErrorDocument 403 /sorry.html
</directory>