IPアドレスが異なるサーバーがいくつかあります。IP経由で直接連絡できないようにしたい。代わりに、自分のドメインwww.site.comにリダイレクトしてもらいたいです。
次の条件は完全なIPと一致します。
RewriteCond %{REMOTE_HOST} !^123\.456\.789\.012$
Apacheの書き換えルールを使用してIPを照合するにはどうすればよいですか?
IPアドレスが異なるサーバーがいくつかあります。IP経由で直接連絡できないようにしたい。代わりに、自分のドメインwww.site.comにリダイレクトしてもらいたいです。
次の条件は完全なIPと一致します。
RewriteCond %{REMOTE_HOST} !^123\.456\.789\.012$
Apacheの書き換えルールを使用してIPを照合するにはどうすればよいですか?
間違ったタグを使用していたことに注意してください。これはユーザーのIPであるため、REMOTE_HOSTではありません。サーバーのIPを取得するにはHTTP_HOSTが必要です。
例えば::
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^\d+\.
RewriteRule (.*) http://www.example.com/$1 [R=301]
編集します。必要に応じて、より具体的な正規表現を使用できます。主な問題は元のタグでした。
Edit2:
リダイレクトする特定のIPのリストがある場合は、次を使用できます。
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^111\.111\.111\.111 [OR]
RewriteCond %{HTTP_HOST} ^222\.222\.222\.222
RewriteRule (.*) http://www.example.me/$1 [R=301]
正規表現だけが必要な場合は、次のように置き換えてみてください!^123\.456\.789\.012$
。
!^[0-9]{0,3}\.[0-9]{0,3}\.[0-9]{0,3}\.[0-9]{0,3}$
これは、0から9までの文字(数字)の0から各リテラルドット間で最大3回、3ドット間で4回一致します。
上記の@Fabrício-Mattéよりも少し完全です。IPをキャッチし、特定のドメイン名に変換します。これは、ユーザーがどのIPを使用するかわからない場合(たとえば、内部IPと外部IPなどの複数のIPがある場合)に特に役立ちます。
RewriteEngine on
RewriteCond %{HTTP_HOST} ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$
RewriteRule ^(.*)$ http://www.example.com$1 [L,R=301]
Apacheは、明示的なServerNameまたはServerAliasの一致がないVirtualHostが存在するリクエストを受信すると、それらすべてのリクエストを、定義された最初のVirtualHostに転送します。
別のデフォルトの仮想ホストを設定し、そこにすべての「一致しないリクエスト」機能があります。