WordPressでパーマリンク変更後に404になる時の直し方 | .htaccess

結論

パーマリンク変更後の404は、まず「設定 > パーマリンク」を開いて書き換えルールを更新しなさい。直らなければ、.htaccess の書き込み権限と、サーバーの mod_rewrite を確認するのよ。

サチエ

あら、のりお。モニターを見つめて固まって、どうしたの?

のりお

サチエさん、会社のWordPressでパーマリンクを変えたら、記事のURLが404になってしまって……。

サチエ

あらあら。慌てる男はモテないわよ。順番よ、順番。

のりお

直し方を、教えていただけますか……。

サチエ

いいこと教えてあげる。よく聞きなさい。

404になる原因:mod_rewrite が使えない、または .htaccess の問題

パーマリンクを「Post name」のような読みやすい形にすると、WordPress は書き換えルール(rewrite rules)でURLを処理するの。このルールが働かないと、記事のURLが404になるわ。

公式のトラブル解説には、Apache の mod_rewrite が有効でない時に、読みやすいパーマリンクで404になると書かれているのよ。マルチサイト、共有ホスティング、サイトの移行やサーバー移転のあとに多いとされているわ。

書き換えルールは、お店の案内係みたいなもの。案内係が動かなければ、お客様は席にたどり着けないでしょう?

状況 見る場所
パーマリンクを変えた直後に404 「設定 > パーマリンク」を開く
開いても直らない .htaccess の書き込み権限、mod_rewrite
カスタム投稿タイプだけ404 固定ページとの名前の重複
移行・サーバー移転のあとに404 mod_rewrite が有効か(契約先に確認)

「設定 > パーマリンク」を開いて直す手順

  1. 管理画面で「設定 > パーマリンク」を開きなさい。公式の説明では、この画面を開くだけで、書き換えルールが更新されるのよ。
  2. 投稿のURLを開き直して、404が直ったか確認するの。
  3. 直らない時は、選んでいる構造はそのままで、画面下の「変更を保存」を押すのよ。公式のトラブル解説は、この画面でパーマリンクをリセットするよう案内しているわ。
  4. 保存後の画面のメッセージを見なさい。

保存後のメッセージで、次の対応が分かれるのよ。

保存後の表示(公式の英語表記) 意味 次にやること
Permalink structure updated. .htaccess に書き込めた。WordPress が自動で更新した 404が直ったか確認する
You should update your .htaccess now. .htaccess に書き込めない 次の節で、ルールを手動でコピーする

管理画面が日本語の場合、メッセージの文言は上と違って表示されることがあるわ。

.htaccess が書き込めない時は、ルールを手動でコピーする

.htaccess が書き込み不可だと、画面の上部に「You should update your .htaccess now.」が出るの。画面の下のほうのテキストボックスに、書き換えルールが表示されているわ。これを自分で .htaccess にコピーしなさい。

.htaccess を編集する前に、今の .htaccess を手元にコピーして残しなさい。 サイト全体のバックアップはWordPressのバックアップを手動で取る方法を見てちょうだい。

  1. パーマリンク画面のテキストボックスをクリックし、キーボードの Ctrl + A で全体を選択して、コピーするのよ。
  2. FTPソフトでサーバーに接続し、WordPress をインストールしているフォルダを開きなさい。
  3. .htaccess を開き、コピーしたルールを貼り付けて保存するの。
  4. 投稿のURLを開き直して、404が直ったか確認するのよ。

.htaccess が見つからない時は、次の2点を確認しなさい。

  • 先頭にドットが付くファイルは、多くのサーバーで、初期設定では隠しファイルなの。FTPソフトで隠しファイルを表示する方法は、ソフトのマニュアルで確認なさい。表示の手順はメンテナンスモードが解除されない時の直し方でも書いているわ。
  • パソコンで .htaccess を新しく作る時は、OSによって、先頭がドットのファイル名を作れないの。htaccess.txt のようなドットなしの名前で作り、アップロードしたあとに、FTPソフトで .htaccess に名前を変えるのよ。

.htaccess を書き込み可能にする方法は、公式が「Changing File Permissions」のページで案内しているわ。権限の変更に不安がある時は、契約先に相談なさい。

カスタム投稿タイプだけ404になる時

通常の投稿は表示されるのに、カスタム投稿タイプだけ404になる時は、次の順に確認しなさい。

  1. カスタム投稿タイプと固定ページが、同じ名前になっていないか。同じなら、固定ページの名前とスラッグを変えなさい。
  2. 「設定 > パーマリンク」で、デフォルトの構造を選んで保存するの。そのあと、使いたい構造を選び直して保存しなさい。書き換えルールが更新されて、直るはずだと公式は説明しているわ。

それでも直らない時の確認

ここまでで直らない時は、サーバー側の設定を疑うのよ。

mod_rewrite は、サーバーが提供する機能なの。自分の契約先で有効かどうかは、契約先のマニュアルかサポートで確認しなさい。.htaccess の編集に慣れていなければ、公式は、ホスティング会社に mod_rewrite の有効化を頼むよう案内しているわ。

契約先が Apache でない場合の設定は、契約先に確認すること。

.htaccess にルールを手書きする場合、公式が示している WordPress 用のブロックは、次のとおりよ。書く前には、WordPressのバックアップを手動で取る方法のとおりバックアップを取りなさい。

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

保存後に、サイトが「重大なエラー」の画面になった時は、「重大なエラー」の直し方と復旧モードのメールの使い方を見なさい。

よくある質問

「設定 > パーマリンク」を開くだけで、404は直りますか。

公式の説明では、この画面を開くだけで書き換えルールが更新されるわ。直らない時は、構造をそのままにして画面下の「変更を保存」を押しなさい。

「You should update your .htaccess now.」と出たら、どうすればいいですか。

.htaccess に書き込めない、という意味よ。画面の下のほうのテキストボックスに出ている書き換えルールを、自分で .htaccess にコピーしなさい。編集の前に、今の .htaccess を手元に残すのよ。

パソコンで .htaccess というファイルを作れない時は、どうすればいいですか。

OSによっては、先頭がドットのファイル名を作れないの。htaccess.txt のようなドットなしの名前で作ってアップロードして、そのあとFTPソフトで .htaccess に名前を変えなさい。

のりお

まず「設定 > パーマリンク」を開いて、だめなら .htaccess、ですね。

サチエ

そうよ。いきなりファイルをいじる前に、画面から順番に確かめるの。

のりお

.htaccess を触る前には、バックアップですね。

サチエ

分かってきたじゃない。それでも直らなければ、契約先に聞けばいいの。一人で抱え込まないことよ。

まとめ

  • 404になったら、「設定 > パーマリンク」を開く。直らなければ「変更を保存」を押す。
  • 保存後に「You should update your .htaccess now.」が出たら、画面のルールを .htaccess に手動でコピーする。編集前にバックアップを取る。
  • カスタム投稿タイプだけ404なら、固定ページとの名前の重複を確認する。それでも直らなければ、契約先に mod_rewrite を確認する。

出典

この記事を書いた人

サチエ

サチエ

元銀座ママのサチエが、WordPressの困りごとを人生と夜の世界の例えで教えるサイトです。慌てる男はモテないわよ。順番よ、順番。

← 記事一覧に戻る