http://10.0.0.1
などのIPアドレスでWebサーバーにアクセスしたときに、http://example.com
などのドメイン名にリダイレクトされるようにしたい。 Apache Webサーバーを使用していて、次のことを試しました。
<VirtualHost 10.0.0.1:80>
Redirect / http://example.com
</VirtualHost>
優先度がより高いため、無限のリダイレクトループを生成しました
<VirtualHost *:80>
ServerName example.com
...
</VirtualHost>
これは私が最終的に提供したい仮想ホストです。
私も試しました
<VirtualHost 10.0.0.1:80>
ServerName 10.0.0.1
Redirect / http://example.com
</VirtualHost>
おそらくhttp://10.0.0.1
にのみ一致し、http://example.com
には一致しないと考えています。しかし、それはまた無限ループを生成します。それを達成する方法はありますか?
IP仮想ホストがメインではなく、唯一の仮想ホストである理由は、サーバー上の他のIPもexample.com
を提供できるようにするためです。
HDの回答は、適切な書き換えルールを提供しましたが、その前に条件を設定する必要があります。 10.10.10.1で実行されている仮想ホストが1つだけであることを確認し、定義を次のようにします。
<VirtualHost 10.0.0.1:80>
ServerName servername.com
.....
RewriteCond %{SERVER_NAME} 10.10.10.1
RewriteRule /(.*) http://servername.com/$1 [R=301,L]
</VirtualHost>
このように、上記でやろうとしていたことの代わりに、そのIPアドレスに必要な仮想ホストは1つだけです。注:このサーバーに複数の仮想ホストを配置する場合は、残りを異なるIPに配置する必要があります
私は同じ設定を試してみましたが、うまくいきます。仮想ホストと競合する他の定義がないことを確認しますか? Apacheログのエラーは何ですか?
このルールも機能します:
RewriteRule ^(.*)$ http://example.com/$1 [R=301,NC]
.htaccess
以下を追加します。
RewriteCond %{HTTP_Host} ^123\.123\.123\.123
RewriteRule (.*) http://www.example.com/$1 [R=301,L]