WordPressでないCMSや一般的な静的HTMLで作ってあったWebサイトをWordPressに作り替えたときにはトップページ以外のページのurlが違うために、せっかくGoogle検索などで検索結果が出てもNotFoundになってしまい、イメージが…という場合があります。
そんなときの対処方法を書きます。
なぜPageNotFound(見つからないページ)になってしまうのか?
Webサイトのトップページのurlは大丈夫なのに、なぜ、トップページ以外のページが見つからない(NotFound)ページになってしまうことがあるのか?について書きます。
トップページのurlは http://example.com のようにしているので、WordPressでないCMSや一般的な静的HTMLで作ってあったページをWordPressにリニューアルしても、urlが変わらないため正しく表示されます。
しかし、その他のページはたとえば会社案内のページが
http://example.com/company.html
だったりした場合は、WordPressでは表示させることができません。mod_rewriteを使えばなんとかなるかもしれませんが、ちょっとすぐにとうか簡単にはできないようです。
Codexでは
に、説明があったようなのですが本日(2016/04/03)現在、その項目が取り消し線で消されていて、あまり簡単にはできそうにありません。
WordPressで作ったWebサイトで、存在しないurlを見に行った場合は
テーマ:Simplicity2
テーマ:TwentySixteen
こんな感じになってしまいます。このままだとちょっと残念なので、せめて見つからないページのurlで見に来られた場合は、Webサイトのトップページを表示したいなと思います。
テーマ Simplicity2 で対応する方法
Simplicity2で見つからないページのときにトップページを表示するには、と検索したところ、
に参考になる記事が見つかりました。この内容はSimplicity1のときのものみたいでしたが、参考になりました。
使っている子テーマに、Simplicity2フォルダから header.php をコピーします。
<!DOCTYPE html> <html <?php language_attributes(); ?>> <head>
このファイルの頭はこのようになっていますが、これを
<?php if ( is_404() ):?> <!-- リダイレクトタグを記入 --> <?php header('HTTP/1.0 404 Not Found'); header('Location: '.get_bloginfo('url').'/'); ?> <?php endif; ?> <!DOCTYPE html> <html <?php language_attributes(); ?>> <head>
このように is_404() ページが見つからないときに、トップページにリダイレクトするコードを追加しました。
これで先ほどの存在しないurlをブラウザで指定すると、
このようにトップページに移動しました。
テーマ TwentySixteen で対応する方法
TwentySixteen の場合は…と、Simplicity2とは方法が違うんだろうなぁと思いつつ同じようにTwentySixteenの子テーマにTwentySixteenフォルダからheader.phpをコピーして、コードの先頭の
?><!DOCTYPE html>
このあたりに、先ほど追加したコードを入れて、
?> <?php if ( is_404() ):?> <!-- リダイレクトタグを記入 --> <?php header('HTTP/1.0 404 Not Found'); header('Location: '.get_bloginfo('url').'/'); ?> <?php endif; ?> <!DOCTYPE html>
このようにして、存在しないurlをブラウザで見てみると
このようにトップページが表示されました。Simplicity2での修正方法と同じで良かったんですね!
[amazon_searchlink search=”WordPress”]
コメント