概要
WordPressユーザーがいないリンクを入力するか、リンクが壊れたページ/文をクリックすると、404ページなし(Page not Found)ページが表示されます。 しかし、最近にガッビアーノにウェブホスティングを利用している WordPress ブログで404ページが表示されずガッビアーノで提供される404ページが表示さなるのではない? テーマが提供する404ページが正常に動作していないか、または他の問題があるのか分からないですね。 だから404.phpファイルを変更して、404ページを呼び出すと、すぐにホームページに移動させるスクリプトを入れたことがあります。
404エラー時のホームページに移動(リダイレクト)させる
この作業には、 wp redirect 関数を利用したコードを付けることもできますが、次のようなコードを404.phpページを置き換えました。 (テーマ404.phpファイルがない場合は一つに作成できます。)
<?php header("HTTP/1.1 301 Moved Permanently"); header("Location: ".get_bloginfo('url')); exit(); ?>
ホームページの代わりに他のリンクにリダイレクトさせることも可能です(header()関数は、 ここ を参照)。
404エラー時に多少遅延させた後、ホームページにリダイレクトさせる
別の方法として、現在使用されているブログではないページをユーザーが訪問した場合、一度「Page not Found」が表示される404ページが表示され、約3秒後にホームページに移動するようにコードを追加しました。 少し遅れさせてリダイレクトさせたい場合には、いくつかの方法があるが、次のようなコードをheader.phpファイルに追加しました。
<?php if ( is_404() ) : ?> <meta http-equiv="refresh" content="3;url=<?php echo esc_url( home_url( '/' ) ); ?>" /> <?php endif; ?>
上記のコードをheader.phpファイルの適切な場所に追加してもしますが、テーマファイルを修正することが、今後の維持管理面で不便がありますので wp_head アクションを使用して WordPress ... の間にコードを入れることも可能です。 その場合には、
// In case of 404 Page Not Found, the following code will redirect users to home page with 3 seconds delay add_action('wp_head','hook_404'); function hook_404() { ?> <?php if ( is_404() ) : ?> <meta http-equiv="refresh" content="3;url=<?php echo esc_url( home_url( '/' ) ); ?>" /> // Please change "3" to the one you want <?php endif; ?> <?php }
上記のようなコードを WordPress 関数ファイルに追加します。
コメントを残す