管理しているサイトで、検索からいちばん見られていた記事が、ゴミ箱に入ったまま 410(もうない)を返していました。
書いてある内容に直したいところがあったため、戻さずに、近い内容の記事へ 301 で転送することにしました。
この記事では、記事を消したあとの URL の扱い方と、テーマで転送を入れたときのことをまとめます。
消した記事の URL の扱い方は 3 つ
| 扱い | 検索からの人 | 向いているとき |
|---|---|---|
| 404・410 のまま | 「ページがありません」を見て帰る | 見に来る人がほとんどいない |
| 記事を戻して直す | 直した記事を見る | 直しても、見に来る理由が残る |
| 近い記事へ 301 で転送 | 近い内容の記事を見る | 見に来る人がいて、戻せない理由がある |
今回は、記事が見られていた理由そのものが、直したいところと同じでした。
直すと見に来る理由がなくなるため、近いデザインの記事へ転送しました。
転送先の選び方
- 検索から来た人が「近い」と感じる記事にする(今回は色と仕上げが同じ記事)
- 一覧のページより、1 つの記事のほうが、探していたものに近い
- 転送先が 200 で開くこと・同じ URL の記事がほかにないことをチェックする
テーマで転送を入れる
前に、まとめた記事の URL を転送する仕組みをテーマに入れていたので、その一覧に 1 行足しました。
function mytheme_redirects() {
return array(
'/archives/(元の記事)' => '/archives/(転送先の記事)',
);
}
function mytheme_redirect_removed() {
if ( ! is_404() ) {
return;
}
$path = (string) wp_parse_url( isset( $_SERVER['REQUEST_URI'] ) ? wp_unslash( $_SERVER['REQUEST_URI'] ) : '', PHP_URL_PATH );
$path = untrailingslashit( $path );
$map = mytheme_redirects();
if ( isset( $map[ $path ] ) ) {
wp_safe_redirect( home_url( $map[ $path ] ), 301 );
exit;
}
}
add_action( 'template_redirect', 'mytheme_redirect_removed', 0 );
- WordPress が 404 と決めたときだけ動く。公開中のページには触らない
- このサイトには、消した記事に 410 を返す処理も入っている。410 の処理が先に状態の番号を付けても、あとから 301 で上書きされるので、両方とも動く
- 転送の一覧に、なぜ転送したかをコメントで残す
確かめたこと
| URL | 結果 |
|---|---|
| 元の記事 | 301 で転送先へ |
| 転送先 | 200 |
| ほかの消した記事 | 410 のまま |
| 前に入れた転送 | 301 のまま |
まとめ
- 記事を消すときは、その URL にどれだけ人が来ているかを先に見る
- 戻せない理由があるときは、近い内容の記事へ 301 で転送する
- 転送はテーマの一覧で管理し、理由をコメントで残しておく



