LoginSignup
0
0

More than 1 year has passed since last update.

基本的なリダイレクトの設定

Posted at

複数のケースを想定してリダイレクトを書く場合があったので、メモです。

  • 下記はよくみるリダイレクト処理です。
  • PHPに例えると、RewriteEngine は処理の開始宣言、RewriteCond は条件文、RewriteRule はそこで実行する処理になります。
  • ^はURL正規化の開始フラグです。
RewriteEngine On
RewriteCond %{http_host} ^www.example.com
RewriteRule ^(.*) https://www.yahoo.co.jp/$1 [R,L]
  • 上記のままだと www が付いた場合しか考慮できない可能性があるため、 RewriteCond を複数行にします。
  • RewriteCondに [OR] をつけることでいずれか1つに一致した場合は、 RewriteRule にある処理を実行することになります。
  • 表示には出ませんが、複数ある RewriteCond に何も書かない場合は [AND] として処理され、すべてのRewriteCondが一致した場合にRewriteRule の行にある処理が実行されます
RewriteEngine On
RewriteCond %{http_host} ^www.example.com [OR]
RewriteCond %{http_host} ^example.com
RewriteRule ^(.*) https://www.yahoo.co.jp/$1 [R,L]
  • さらに R=301 とすると恒久的なリダイレクトになります。用途は、サイト移転時などに使います。
  • R=302 とすると、一時的なリダイレクトになり、 用途は同一ドメインのPCやSPサイト間でのリダイレクトやメンテナンス時などに使います。
  • 301と302の大きな違いは、Webサイトのインデックス(検索結果に表示される情報)がリダイレクト前のサイトかリダイレクト先のサイトかです
  • 301がリダイレクト先、302はリダイレクト元のページ情報(インデックス)を検索エンジンのクローラに渡します。
ステータスコード 意味 インデックス   ページランク 用途
301 恒久的 リダイレクト元 引き継がれる *1 メンテナンス、同一ドメインで各サイトに振り分けたい時など
302 一時的 リダイレクト先 引き継がれる *1 サイト移転時など
RewriteEngine On
RewriteCond %{http_host} ^www.example.com [OR]
RewriteCond %{http_host} ^example.com
RewriteRule ^(.*) https://www.yahoo.co.jp/$1 [R=301,L]

↓
RewriteRule ^(.*) https://www.yahoo.co.jp/$1 [R=302,L]

備考

*1 URL の変更を伴うサイト移転に関するよくある質問

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0