メシのタネ

めしのたねになるIT情報配信サイト


IPアドレスのアクセスを.htaccessでドメインにリダイレクトさせたい

, ,

  1. Webサーバー
  2. .htaccess
  3. IPアドレスのアクセスを.htaccessでドメインにリダイレクトさせたい

直接WebサーバーのIPを打ってサイトに飛んで来るスケベな輩に対処する方法を書いて行きます。

今回は.htaccessでHTTPのリダイレクトの仕組みを利用して、IPアドレス直のアクセスを防ぎます。他にもDNSで変更する方法もありますが、今回はやりません。ちなみに、お名前.comは逆引きに対応していません。

IPアドレスの正引きと逆引き

DNSで「hoge.com」を「***.***.***.***」にルーティングするように設定する場合を正引きと呼んで、この逆を逆引きと言います。恐らく大体のレンタルサーバーでは、逆引きされると、エラー画面が出るようになっていると思います。なってないと、Webサイトが表示されてしまう場合があります。

リダイレクトについて

HTTPの仕組みにクライアントがGETリクエストでサーバーに対して、「hoge.com」をリクエストした時に、リダイレクトレスポンスというのをサーバーが送ることでURL転送が実現します。

リダイレクトレスポンスのステータスコードでよくあるのが、301と302になり、転送先URLの書かれたLocationヘッダーを送ることで、クライアントが何処に行けば良いか分かるようになっています。

恒久的なリダイレクト

一時的な移動でなく元のURLは利用しない場合に使います。なので、検索エンジンは、転送先のURLでデータを更新します。

ステータスコード表示される状態主な使用例
301恒久的に移動転送先が正しいURLになる場合に利用する
308永続的なリダイレクト自分の能力だと利用用途が不明。
リダイレクト前と同じメソッドで
リダイレクト先にアクセスできる

一時的なリダイレクト

一時的にWebサイトが利用できない場合に利用します。検索エンジンは、転送先のURLでデータを更新しません。なので、IPアドレスのアクセスをリダイレクトする場合、私なら 恒久的なリダイレクトをします。

ステータスコード表示される状態主な使用例
302見つかる期間指定をしてリダイレクト先を設定する場合
303その他を見るページの再読み込みの誤動作を防止する。
(put,postのあと)
307一時的なリダイレクトサーバに障害が起きた場合に利用する。
リダイレクト前と同じメソッドで
リダイレクト先にアクセスできる
#302の期間指定の例
RewriteEngine On
RewriteCond %{TIME} <20201130000000
RewriteRule ^$ http://hoge.info/from/ [R=302,L]
RewriteRule ^$ http://hoge.info/to/ [R=302,L]

IP直打ちを.htaccessでリダイレクト

.htaccessにはこのように書きました。

 <IfModule mod_rewrite.c> 
 RewriteEngine On 
 RewriteBase / 
 RewriteCond %{HTTP_HOST} ^***\.***\.***\.***$ [NC]
 RewriteRule .* https://***.com%{REQUEST_URI} [R=301,L]
 </IfModule>
IfModule mod_rewrite.cmod_rewrite使う宣言
RewriteEngine mod_rewriteを使うか使わないか
RewriteBase リライト処理のベースとなるURL
RewriteCond [NC]サーバー変数と一致してた場合に次の処理へ
[NC]は、大文字小文字無視
RewriteRule [R=301,L]実際にURLを書き換える処理。
R=301は301でリダイレクト
Lは、変更があった場合、もう一度最初処理されて、
適合しなければ振り分け終了となる。
強制的に終了したい場合はENDにする

というわけで、IP直打ちしてアクセスしてくるすけべぇな輩に対応しましょう!


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

This site uses Akismet to reduce spam. Learn how your comment data is processed.

若い頃、「仕事中にハマったこと」や「誰かに共有したい技術的な気づき」をアウトプットしたくてブログを始めましたが、勢い任せでよく分からない記事を大量生産し、あえなく飽きて終了。

改めて今、キャリア15年分の経験や知識が、これからITエンジニアを目指す方や、同じような課題で悩んでいる現役エンジニアの「メシのタネ」になるような記事を残したいと思っています。
※過去の記事は見ると精神が崩壊するため、そっとしておいてください。

🛠 経歴という名の珍道中:
文系Fラン → 広告営業 → Web営業 → 通信営業 → Web進行 → 出版 → Web媒体運用 → ソフトウェアハウス → SES → フリーランス

専門教育も受けず、転職歴も多数。履歴書はまるで時系列の事故記録のようですが、試行錯誤を重ね、なんとかエンジニアとして食べています。

このブログでは、そんな「履歴書クラッシャー型エンジニア」が送る、
名古屋一敷居の低い、実務に役立つ技術ブログを目指します。

Laravel
belongsToMany 実戦ガイド ── “withPivot”で追加カラムを守る 中間テーブル設計チェックリストNew!!
PHP
魔王と行く! / Interface / Polymorphism / Ontology 深淵ガイドNew!!
Laravel
Laravel 12、「コード 1 行も書き換えず未来へ」──静かな革命の手順書New!!
Laravel
LaravelのMiddlewareって意味あるの?仕組み・使いどころ・やらかしまで整理してみた
Laravel
ServiceProviderって何してるの?DIの背後で動いてるやつの正体
Laravel
LaravelのサービスコンテナとDI、「書いてるだけで動く」コードの正体