先日の通常のHTMLサイトをWP(Wordpress)に移行する作業で考慮もれしていたのが、ページのURLの構造。
既存のHTMLサイトは、各ページにhtml拡張子がついているのですが、WP側はページがディレクトリへの指定になっていて、拡張子はありません。
移行時に、既存サイトURLから、html拡張子を除去した状態で、スラッグに保存すればいいのですが、Google検索結果には、html拡張子が残った状態が検索時に表示されいるので、検索結果からアクセスしようとすると、「ページがありません」となってしまいます。
htaccessでのやり方がわからなかったので、wp側でリダイレクトする方法です。
404ページになった時に、html拡張子であれば、それを取り除いた状態のURLへ301リダイレクトします。
WP側で本当にないページに関しては、この部分をスキップしてページなしのエラーを出力できます。
funtcion.phpに記述します。
function is404_redirect_home() { if( is_404() ){ $match = preg_match('/(.html)/', $_SERVER["REQUEST_URI"]); if($match==1) { $url = preg_replace('/(.html)/', '', $_SERVER["REQUEST_URI"]); $redirect_url = home_url().$url; wp_safe_redirect($redirect_url , 301 ); exit(); } } } add_action( 'template_redirect', 'is404_redirect_home' );