この間、私が運営しているサイトで、長期間にわたり不人気の記事があったので、SEO的なことを考えて削除することにしました。
no indexという方法もあったのですが、本当に読まれていない人気の無い記事だったのと(笑)
no index処理だと反映されるまでに時間がかかると思い記事を削除することにしました。
というわけで、記事を削除したのですが、ここで不思議な現象が起きました。
というのは、削除した記事のURLをクリックすると本来ならば、404エラーが表示されるはずなのですが、なんと違う記事(ページ)が開きました。
開いたのは、記事を削除したサイトの中の他の記事(ページ)でした。
もう少し具体的にいうと、削除した記事のURLに微妙に似たページが開きました。
記事を削除したのに、いったい、なぜこんな現象が起こるのか?
今回の記事では、この不思議な現象の理由を突き止めて、解除するまでの過程を書きました。
記事を削除したURLをクリックすると違う記事(ページ)に勝手に移動してしまう
実は、数年前にも同じ現象が起きたことがありました。
そのときは、何かの不具合だろうとあまり深く考えていませんでした。
しかし、今回も同じ現象が起きたことで、これは、ただの不具合ではないと思い色々調べてみました。
まず、現象についてです
例)
http://aiueo/post15
という記事を削除したとします。
すると下のように同じサイトの違うページへ移動してしまいました。
http://aiueo/post1532
2つのページをよく見ると、記事のURLが微妙に似ています。
post15とpost1532(※これは、1例です)
そのため、最初、私は、ワードプレスで記事を投稿した際に表示されるURLの設定の仕方が悪いためにこういう現象が起きたのではないかと思いました。
いわゆるパーマリンク設定というものです。
私は、大雑把な性格なので(笑)記事を書いた後に、記事のURLをその都度、考えて入力するようなことをしていません(笑)
そのせいなのかと思ったのですが・・・
調べてみると、そうではなくて、意外なことがわかりました。
初めて知りました(笑)
実は、ワードプレスには、そのサイトで存在しないページのURLをクリックした場合、自動的に推測して正しい?似たURLへ移動させる機能があるとのことです。
巷では、おおまかに、「URLの自動リダイレクト」、「URLの自動補完リダイレクト」と呼ばれているそうです
そのような理由で、今回、記事を削除した時に、このような現象が起きたのだと理解しました。
それにしても、この機能って必要なんでしょうか?
個人的には、かえってないほうがいいように思えるんですけど(笑)
それにしても、この「URLの自動補完リダイレクト」という名称を探すのには、ずいぶん苦労しました(笑)
何度もネットで検索しているうちにやっと見つけたという感じです。
ワードプレスのURLの自動補完リダイレクトのデメリット?
個人的な見解ですが、この機能のデメリットをあげてみたいと思います。
●記事の削除がうまくできない。
どういうことかというと、
記事を削除してもしばらくは、古い記事が、検索結果に表示されます。
それを防ぐために、「古いコンテンツの削除リクエスト」という方法があるわけですが、このURLの自動補完リダイレクト機能が働いてしまうと、削除依頼を出しても、エラーが起こります。
つまり、すでに記事を削除して、そのページは現在、存在しないはずなのですが、削除リクエストを行うと、記事は、まだ存在しています。というようなメッセージが表示されます。
無理やり削除すると、似たURLの記事まで一緒に消えてしまうのではないか?何かしらのエラー、不具合が起きるのではないか?と不安になりました。
●サイトの評価に関係してくるのでは?と不安になる。
どういうことかというと、記事を削除したのに、その削除したURLをクリックすると似たURLへ勝手に移動するということは、ワードプレスの内部で何かしらのリダイレクト操作が行われているはずです。
何も無い記事(存在しないページ)から違う記事へリダイレクトが行われた場合、リダイレクトされて開く記事の評価が下がってしまうのではないかという不安がありました。
301リダイレクトの場合は、この場合、評価が下がるはずです。
理由としては、旧記事の評価を新しい記事に引き継ぐ働きがあるからです。
その引き継ぐ記事の元になるページが、実際は存在しないページであれば、評価0の記事を新しい記事へ引き継がせることになるからです。
そのため、301リダイレクトを行う場合は、404ページを301リダイレクトしないほうがよいと聞いたことがあります。
また、実際に行って、質の低い記事とみなされたという人の書き込みを見たことがあります。
話を元に戻します。
私の希望としては、記事を削除した場合に、素直に404が表示されるようにしたいということです。それでないと正確な削除リクエストが行えない可能性もあるからです。
というわけで以下の方法を試してみました。
改善方法
以下が、私が行った方法です。
もし試される場合は、これ以降は、自己責任でお願いします。
以下のコードをfunctions.phpに書き込みむことで自動リダイレクトを解除できました。
function disable_redirect_canonical( $redirect_url ) {
if( is_404() ) {
return false;
}
return $redirect_url;
}
add_filter( 'redirect_canonical', 'disable_redirect_canonical' );
参考にさせていただいたサイト
記事名
WordPress:URLの自動補完リダイレクトを無効にする方法
URL
https://www.nxworld.net/wordpress/wp-disable-redirect-canonical.html
大変助かりました。心からお礼を申し上げます。m(__)m
他の方々のサイトでも色々なコードを載せてくれていましたが、基本的に、自動補完リダイレクトを解除するという働きは、一緒だと思います。
<具体的な手順!>
書き込む場所は、ワードプレスの子テーマでも親テーマでもどちらのfunctions.phpでもうまくできました。
ただし、子テーマ、親テーマ両方に書き込むとエラーになりました。
私は、安全面を考えて子テーマのfunctions.phpに上記のコードを入力しました。
ちなみに書き込む場所は
私は、ワードプレスのテーマにsimplicityを使っていますが、おそらくコードの書き込み方は、ほとんど変わらないと思います。
以下は、simplicity(ワードプレスのテーマ)の場合のコードの書き方です
1、ワードプレスの管理画面の外観→テーマの編集を開きます。
2、テーマの編集画面が表示されます
子テーマであることを確認して
右側のメニューでfunctions.phpを探します。
3、functions.phpをクリックしたら編集画面が開きますので余白に先ほど説明したコードを書き込みます。
4、書き込みが終わったらファイルを更新をクリックして反映させます。
私の場合は、これで、URLの自動補完リダイレクト機能が解除されました。
ところが・・・
ブラウザで確認してみると依然として違うURLへ移動してしまいます。
そんな方は、以下をお読み下さい!
大丈夫です。内部的には、ちゃんとリダイレクトが解除されているはずです。
それでもブラウザで確認すると依然として違うURLへリダイレクトされるのは、ブラウザのキャッシュ(一時ファイル)が残っているからです。
お使いのブラウザの一時ファイル(キャッシュ)を削除してみてください。
すると、削除した記事のURLをクリックすると404ページが表示されると思います。
私の場合は、これでうまくいきました。
一時ファイルの削除の仕方は、ブラウザによって違いますので、すみませんが、各自お調べください。
ちなみに、私は、ブラウザにグーグルクロームを使っていますが、CCleanerというフリーソフトを使って簡単に一時ファイル(キャッシュ)を削除できました。
下の写真の赤枠の部分のタブでブラウザを切り替えること出来ます。
IE(インターネットエクスプローラー)とグーグルクロームに対応しています。
最初、これがわからずに、コードを間違って入力したのか?と何度も見直したりしましたが、
ブラウザのキャッシュの問題でした。
なので、コードを入力し終わったら、そのブラウザの一時ファイル(キャッシュ)を削除したほうがいいと思います。
リダイレクトのキャッシュの残っていない違うブラウザを使えば問題ないと思いますが、いつも使用しているブラウザ上では、キャッシュを削除しない限り違うページへ依然として勝手に移動してしまいます。
とりあえず、URLの自動補完リダイレクトの問題については、解決してほっとしました。