間違えてリンクされたページを.htaccess使わずにリダイレクトする

おちです。

ヨソのページからトラフィック貰うの嬉しいですよね。でも、URL間違えてリンクされちゃって「ぎゃー!」ってことないですか?ないですか、そうですか。

ドメインさえ通ってれば .htaccess で正規化できるとは言え、レンタルサーバでルート触らせて貰えないこともあるでしょう。でもWordPressなら個別にリダイレクトできて便利です。

特定URLでアクセスされたときに別ページにリダイレクトさせる方法

もちろん相手と連絡つくならリンクを書き換えて貰うのがベストです。でもバズったおこぼれが飛んできてるときとか、一分一秒を争うケースも…ありますよね、一応。

【404.php】
if ( $_SERVER['REQUEST_URI'] == '/データが存在しないアドレス(ルート以下)/' ):
  wp_redirect(home_url('/代わりのページ(ルート以下)/'));
exit;
?>

404.php を設置してない場合は function.php に書いても動きます。

存在しないページに来たアクセスを全部トップページに飛ばしたい

「URI構造変えたら個別リダイレクトが効かなくなった」とか、「本当は対応表作った方が良いのは判ってるけど面倒臭いんだよ!」…という場合の対処法がこちら。(^^;

WordPressでリダイレクト

存在しないページに来たリクエストを全部特定のページ(ここではトップページ)に寄せる方法です。

【404.php】
<?php
wp_redirect(home_url(), 301);
exit;
?>

404.php がなかったら作って下さい。空ファイルに上記コード丸ごとコピーしてテーマファイルディレクトリに突っ込めばWordPressが良きに計らってくれます。OH便利~。

wp_redirect() のデフォルトステータスは302リダイレクト(一時的なアドレス変更)となってますが、301リダイレクト(恒久的な移転)もセットできるようです。

301はサーチエンジンも書き換える強力なステータスコードなので設定する際は慎重に。(良くわかんなかったらとりあえず302のままでOKです。)

おまけ:存在しない特定のURLから来た人向けにメッセージを出す

何らかの理由でリダイレクト出来ない or したくない場合、特定アドレスへアクセスした人だけにメッセージを出すことも出来ます。
「お探しのページはこちらです」とかリンク張っておけば親切ですよね。

【404.php】
<?php if ( $_SERVER['REQUEST_URI'] == '/データが存在しないアドレス/' ): ?>
  <p>
   そのページはこちらに移転しました <a href="振り分け先アドレス">新しいページはこちら</a>
  </p>
<?php endif; ?>

間違えてリンクされちゃったよ~どうしよう!まとめ

普段リダイレクトは .htaccess で設定してるんですけど、簡単な振り分けに 404.php 使うの気軽で良いかもしれないなーと思ったんで書いてみました。

お役に立ちましたらリンクバック頂けると喜びます。シェアボタン下のテキストボックスをちょろっと貼り付けるだけでOKなんですよ。やっだ何それ便利。

それではまた!

【 関連記事 】


超便利!トラックバックURLの代わりにリンクタグ出力してみた

トラックバック機能も誰も使ってないし、WordPress同士なら不要だしってことで代わりにリンクタグ出してみました話。