やまだです。
ずっと悩んでいたことが今日ようやく解決できました!!
ワードプレスのパーマリンク変更による404問題です。
パーマリンクとはドメインの後にスラッグがついているもの
ネットでたくさん検索して解決法をリサーチしていたのですが、いろんなやり方があって複雑でなかなか出来なくて困っていました。
余計に混乱しちゃったわ
ですが、意外と簡単にできたのでこれを困っている人にシェアしたくて記事にしました。
Contents
パーマリンクを変更すると404エラーがでる
このようにワードプレスを始めるときは、「基本」になっています。
基本から投稿名に変えるのがSEO的には評価がよいので、これに変える必要があります。それで変更すると…
すでにある投稿記事は404エラーがでてしまいます。(記事がまだ入ってない時は大丈夫です)
トップページ以外はどのページも404エラーがでて、見れません。
404エラーは、ウェブページが見つからない場合に表示されるHTTPステータスコードです。
URLの間違い
URLが誤って入力されているか、変更されたために正しいページにアクセスできない場合がある
ページの移動または削除
ウェブサイトの管理者がページを移動したり削除した場合に発生
リンク切れ
外部または内部リンクが古くなっていて、存在しないページにリンクしているとき
.htaccessを編集してパーマリンク変更が上手くいくようにする
パーマリンクのトラブルを解決する方法として、いくつかのサイトでは .htaccessファイルを編集する、というやり方が有効だと書かれていました。
だからほかの方法探してた
いろいろ検索して、やっぱりこの.htaccessを書き換えるのが有効だとわかったので、ドキドキしながらやることにしました。
まさに手術をするような感じです(; ̄ー ̄A
.htaccessの書き方もサイトによってバラバラで、統一性がなく、どれを信用すればいいのかわからず怖い…
404エラー解消作業の前にやるべきこと
Export any WordPress data to XML/CSV というプラグインをインストールしておく
Export any WordPress data to XML/CSV は、投稿した記事を一括でダウンロードできるプラグインです。
既に投稿記事があるなら、必ずエクスポートしておいてください。
使っているサーバーがmod rewrite に対応しているか確認
以下のサイトにかかれていたのですが、mode rewrite にサーバー会社が対応しているかチェックするのが大事だそうです。
参考:https://queryinc.co.jp/blog/modrewrite-parmlink-404/
mod_rewriteは、Apacheウェブサーバーにおける非常に強力なモジュールで、URLの書き換えを行うために使われます。
もっと簡単に言うと、訪問者がアクセスするURLを別のURLに変換する機能です。
たとえば、example.com/old-page
をexample.com/new-page
にリダイレクトとか。
RewriteEngine On:mod_rewriteモジュールを有効にします。
RewriteCond:条件を指定します。次のRewriteRuleが適用される前に、この条件が満たされる必要があります。
RewriteRule:実際の書き換えルールを指定します。
私はエックスサーバーを使っているのですが、サーバーが対応しているか、ChatGPTにきいてみました。
エックスサーバーはmod_rewriteに対応しています。mod_rewriteはApacheサーバーのモジュールであり、URLの書き換えを行うために使用されます。エックスサーバーでは、.htaccessファイルを使用してmod_rewriteのルールを設定できます。
そして、このようにプロンプトを入れました。
以下のようにコードを挿入することにより、WordPressのパーマリンク設定が「投稿名」に変更されていても正しく動作し、404エラーが表示されないようになるとChatGPTはいっています。
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
だけど、まだ不安だった私はChatGPTにこんな風にしつこく聞きました💦
WordPressのパーマリンクを「基本」から「投稿名」に変更する場合、必要なリライトルールは既に標準のWordPressの設定でカバーされています。
.htaccess
ファイル内に特別な追加ルールは不要です。以下の設定は、投稿名を使用したパーマリンク構造に対応するために必要なリライトルールを含んでいます。 by ChatGPT
エックスサーバーで.htaccessを変更する方法
意を決して、ファイルをいじくることにしました。
サーバーパネルにログインして、.htaccess編集をクリック
ドメイン名を選択
対象ドメイン名を確認して、編集タブをクリック
コピペで貼り付ける。
※最初の.htaccessはバックアップを取って置いてください。万一に備えて。
これで、パーマリンクを投稿名に変更したら、404エラーがでなくなります。
もう二つ仕事やることがあるわ
投稿記事名のスラッグを編集していく
すでに投稿している記事名は、パーマリンク変更で「日本語名」になっています。
・日本語を話すユーザーにとってわかりやすく、意味が明確である
・ブラウザのアドレスバーに表示されたときに、URLから内容が推測しやすい
・ブラウザやサーバーによってエンコードされるため、見た目が%エンコード(例:%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF)の形式になる
・リンクをコピー&ペーストするときに見た目が悪くなることがあり
・SNSではURLを正しくリンクとして認識しないものもある
むしろ、エンコードされたURLが検索エンジンにとって読みづらくなることもあるのよ
おすすめはローマ字や英語を使用すること!
というわけで「投稿一覧」にある記事のスラッグを一つずつ変えていきます。
例:example.com/konnichiwa
やexample.com/hello
最初にRedirectionというプラグインをインストールして有効化だけしておきましょう!後で説明します
クイック編集から行くと楽。
連語はハイフンでつなぐといい
プラグイン Redirectionを入れて転送させる
パーマリンクを変更した後にリダイレクションを設定しないとダメです。
検索エンジンは、古い、以前のURLをインデックスに登録しています。
ですが、パーマリンクを変更すると、これらの既存のURLが無効になり、新しいURLにアクセスできない状態になります。
古いパーマリンク
変更後のパーマリンク
https://hoshikirara.com/世界初!竹内哲也のゼブラ「ZEBRA」ツールをレビュー 検証
Redirectionのインストール
Redirectionをインストール、有効化して、設定をしていきます。
ツールから転送ルールをクリックします。
スラッグを変えたらこんな風に勝手に入っています。
ソースURLは以前のスラッグ
ターゲットURLは先ほど変えたばかりのスラッグ
ですが、パーマリンクは「基本」のこのような数字だったので、このように一番最初のスラッグに変更します。
保存してリダイレクトできるか確認しましょう!
ちゃんとできたらOK!
まとめ
ここまでくるのにかなり時間を要しました。
私ももっと技術力があれば…と思いましたが、なんとか変更できてよかったです。
こんな苦労をしなくていいように、最初からパーマリンクは「投稿名」にしてローマ字や英語で毎度修正するようにするのがSEO的にもよいので、絶対に取り入れてくださいね!
この記事が同じように困っている人の役に立てばいいなと思います^^