ユニソルデザインの備忘録
記録
2023.01.30

WordPressで404エラーを回避したい。リダイレクトする方法

  • Onigiri
  • 毎日が手探りWEBデザイナー、最近は都市伝説YouTubeを見るのにハマっていますおにぎりです。
    Google search console(グーグルサーチコンソール)やBeing Webmaster Tools(ビーイングウェブマスターツール)で出ているエラー確認をしたところ、「ページが見つかりません」エラーが…
    原因はテストで作成した固定ページや投稿記事をリニューアル後に削除したものを読み込んでいた…というオチでした。

     

    404エラーがあるのは良くないし、エラー表示を無くしたい〜!と思ったので以下対応をしました。

参考にさせていただきました。(分かりやすくて簡潔なのでとてもありがたかったです!)
https://webcreatetips.com/coding/1352/ 


404エラーをトップページにリダイレクトさせる方法

以下をfunction.phpに記載することでトップページにリダイレクトされます。

 

function.phpは現状サーバーにあるものを必ずバックアップを取ってからアップロードしてください。
何か表示がおかしくなった時にすぐに元に戻せるので…リスク回避…リスク回避…

// トップページにリダイレクト
add_action( 'template_redirect', 'is404_redirect' );
function is404_redirect() {
if ( is_404() ) {
wp_safe_redirect( home_url( '/' ), 301 );
exit();
}
}


404エラーをトップページではなく固定ページへリダイレクトさせる方法

トップページに飛ばしたいわけじゃないんだ!
と言う時にはこちらが有効です。

 

こちらも以下をfunction.phpに記載することで希望のページへリダイレクトされます。

 

// 固定ページにリダイレクト
add_action( 'template_redirect', 'is404_redirect' );
function is404_redirect() {
if ( is_404() ) {
wp_safe_redirect( get_permalink( get_page_by_path( '固定ページのスラッグ' ) ), 301 );
exit();
}
}

アップ前に必ず現状サーバーに上がっているfunction.phpのバックアップを取ってくださいね😃

私のバックアップの取り方は「backup」フォルダを作りその中に「20230130」という日付フォルダを作成して、
その日のバックアップを取るようにしています。
今日のバックアップは「20230130」フォルダに「function.php」と「index.php」が入っている、という感じでその日にどのファイルを触ったのかわかるようにしています。
すぐ忘れてしまうので😩
何か良いバックアップの取り方ってありますかね〜…


301と302の違いって?

よく見る301リダイレクトと302リダイレクトのことですが、HTTPレスポンスステータスコードと言うそうです。✍️
HTTP レスポンスステータスコード 

// トップページにリダイレクト
add_action( 'template_redirect', 'is404_redirect' );
function is404_redirect() {
if ( is_404() ) {
wp_safe_redirect( home_url( '/' ), 301 );
exit();
}
}

上記コード内の「wp_safe_redirect」に記載されている数値ですね。

 

HTTPリクエストが正常に完了したかどうかを示すもので、簡単に言うとロボットへの結果報告とのこと😲
見ようとしていたページがリダイレクトだよという結果報告のために使用するステータスコードが主に301リダイレクトと302リダイレクトということです。

 

301 Moved Permanently

リクエストされたリソースのURLが永遠に変更されたことを示します。レスポンスで新しいURLが与えられます。

 

302 Found

このレスポンスコードは、リクエストされたリソースのURIが一時的に変更されたことを示します。URIは将来、さらに変更される可能性があります。従って、クライアントは将来のリクエストでも同じURIを使用するべきです。

 

301リダイレクトは「旧URLは消滅してこの先は新URLで稼働していきます」と言う宣言で、
302リダイレクトは「今だけリダイレクトしているだけで、また旧URLで復活して稼働していきます」という宣言です。
今回はテストページで作成しただけでこの先一生使わないURLだったので、301で記載しました!

URLURIの違いとは???となった方がいらっしゃるかと思います。(私も思いましたー) URLURIとは別にURNというものもあります。
「URLはWeb上の住所」「URNはweb側で認識されている名前」です。URNは一般ユーザーの目に触れることはほとんどないのでここでの詳細は省きます。
簡単にいうと、「URI」とは「URL」と「URN」の総称です。ん〜ややこしい。
URI=URLURI=URNどちらのことも指していると考えていたら良いと思います。
スペル間違いじゃないってことですね☀️
これでまた引っかかることが出てきたらノートにまとめます。

 

URI=Uniform Resource Identifier
URL=Uniform Resource Locator
URN=Uniform Resource Name


リダイレクトではなく404ページを作る

単純にこのURLは存在しないんだよ、という404ページをオリジナルで作成することもできます。

<?php get_header(); ?>
<main>
<section>
<header>
<h1>ページが見つかりませんよ。</h1>
</header>
<!-- .page-header -->
<div>残念ながらお探しのページは無くなりました。</div>
<!-- .page-content --> 
</section>
<!-- .error-404 --> 
</main>
<!-- #main -->
<?php get_footer(); ?>

404.phpで保存してindexと同じ階層にアップするだけでOKです。
書き方の正解とかは特にないと思うのでお好きにアレンジして
誘導したいリンク先や、ヘッダーフッターを読み込んでユーザーに行き先を委ねるでも良いと思います。

 

これに関してはまだ疑問が残っているのでまた次回続きをまとめようと思います!