こんにちは、さち です。
先日、いつものようにブログを更新したのですが、記事ページの URL(スラッグ) の指定を間違えるという凡ミスをしてしまいました。
しかも、そのミスに気づいたのは翌日になってから。
完全にやってしまった……
記事の URL(スラッグ) を間違えた
- ブログ更新の通知がツイッターに投稿されました。しかし、記事の URL をよく見ると、先頭を「excel」としたつもりが「e」が消えて「xcel」になっています。(ただし、リンクは正常に動作している)
- WordPress の管理画面を見ると、記事の「スラッグ」の入力にミスが……。これが原因です。
このミスに気づいたのは翌日。かなり時間が経っているので、次のような事情を考えなくてはいけません。
- すでに Google が誤った URL(スラッグ) で検索に登録している
- ブログ更新のツイートに「いいね」や「リプライ」をくれた人がいるのでツイートの削除&再投稿はしたくない
つまり、URL を変更するだけでは済みません。変更前の 旧URL を 新URL にリダイレクト(自動転送)する必要があります。
解決方法
おまえき
前項で URL を変更するだけでは済まないと書きましたが、実際の解決方法は URL(スラッグ) を変更するだけです。すみません。
ただ、当時の私は本当にそう思っていて「.htaccess」を使って 旧URL(修正前のスラッグ) から 新URL(修正後のスラッグ) にリダイレクト(301)するようにしていました。
しかし、その後『もしかして、こんなことしなくても大丈夫なのでは?』と淡い期待をして「.htaccess」の適用を外してみると、普通にリダイレクト(301)されました。
WordPress は、自動的に 旧URL からリダイレクトしてくれるのです。賢いですね。
操作手順
ユーザー側でリダイレクトの設定をする必要はありません。スラッグを修正するだけです。
- 誤ったスラッグを……
- 修正して記事を保存します。これだけで解決です。
- 試しに、旧URL にアクセスしてみます。Firefox の開発者ツール(ネットワーク)で確認すると、ちゃんと 旧URL から301リダイレクトされて 新URL に移動しているのが分かります。
難しく考える必要なんてなかったですね。
ちなみに
スラッグを変更した場合、データベースはどうなっているのでしょう? 実際に、確認してみました。
「wp_post」テーブルを開くと、該当記事の「post_name」が修正後のスラッグに変更されています。この記事の ID は「3146」です。
続いて、「wp_postmeta」テーブルを開きます。「post_id」が先ほどの ID「3146」と同じものを探すと、「meta_key」に「_wp_old_slug」と書かれたレコード(行)があります。ここには、その名のとおり「meta_value」に修正前のスラッグが記録されています。
WordPress はこれらのデータを使って、自動で 301リダイレクト をしてくれるようです。初心者にも優しい仕様、素晴らしいです。
試してはいませんが、恐らくスラッグを変更するたびに「_wp_old_slug」が増えていき、すべてのスラッグ(旧URL)から 301リダイレクト してくれるのだと思います。
コメント