記事のURL変更後の自動リダイレクトを止める方法
- 投稿日/更新日
解決方法
データベースを直接修正(削除)します。データベース名「(固有名)_postmeta」の項目名「meta_key」の値が「_wp_old_slug」を検索します。すると、旧URL(パーマリンク名)のデータがあるので削除します。
解説
WordPressのサポートスレッドを参考にしました。WordPressでは記事のURLを変更(パーマリンクのURLスラッグ)すると、旧URLと新URLが自動的に紐づけされて、勝手にリダイレクトする仕組みになっているようです。
実例で紹介しますと、下記のようにURLを変更しました。
https://fukushimaku.jp/kiji/post_110.html
↓
https://fukushimaku.jp/kiji/20211130080500.html
この状態で、post_110(以下 旧URL)のほうにアクセスしてみると、20211130080500.html(以下 新URL)にリダイレクトされます。
Chromeのネットワークログでリダイレクトの様子を見てましょう。開発者コンソールを開き、ネットワークタブを開きます。ログなにか残っていれば消去ボタンを押して一旦クリア。そして「ログを保持」のチェックを入れて、旧URLにアクセスしたのが上記のログです。たしかに旧URLでアクセスすると、Statusが301になっていますね。
新旧URLの結びつけは、WordPressのデータベース「_postmeta」に保存されています。meta_key
の値が_wp_old_slug
のものを検索すると、たしかにmeta_valeu
のところが旧URLのスラッグ名になっています。post_id
は記事のIDですね。それではこのデータを削除し、旧URLにアクセスしてみましょう。
無事、404エラーを返すようになりました。
新しい記事に旧URLと同じスラッグをつけたらどうなる?
旧URLのデータが残っている状態で、まったく新しい記事に旧URLと同じスラッグ名を付けたら、いったいどうなるのでしょうか? 答えは新しい記事が優先されます。もちろん、この新しい記事を削除したりすると、再びリダイレクトされるようになります。
ただし、その旧URLはステータスコードが301(恒久的移動)でGoogleに認知されてしまうので、旧URLは使用しないことをオススメします。
あとがきメモ
記事が勝手にリダイレクトされていたので、最初はhtaccessを調べたり、ページのヘッダにmeta freshなどのタグが出力されていないか、フォルダに変な設定ファイルが入っていないかなどを調べていました。蓋を開けてみれば、WordPressの妙なおせっかいな機能でした。リダイレクトされて困っている方は、一度この自動リダイレクトをしらべてみてください。
備忘録として残しておきます。