どうも、ソルティーです。

[aside type=”normal”]今回はちょっと特殊なケースの話
玄人向けの内容です。ブログ初心者は見てもなんのこっちゃって話になるので、バックしてください。[/aside]

複数のサイトを持ちたいと思った時、改めてドメインを取ったり、サーバーを契約するのは大変です。
しかし、もっと簡単に複数のサイトを運営する方法があります。

それがサブディレクトリ型です。この方法によって1つのドメイン、1つのサーバーで何個もサイトを作ることができます。

しかし、このサブディレクトリ型はそのままフォルダの名前がURLに含まれてきます。その影響からか、途中でフォルダ名を変更すると記事だけが404エラーになってしまうことがあります。
私も完全にどツボにハマってしまいまして…。
記事がうまく表示されなくなった時にはかなり焦りました。そして直すまでに少し時間がかかってしまいました…。

カンタンに答えを書くと『初期設定に戻してから、再びパーマリンクの更新をした』だけなのですが、ここでは備忘録に課程で何をやったのか、その対処法をまとめていきます。

404エラーになってしまう原因

本来はフォルダ名が変わった場合、変わった時点で自動的にURLを書き換えてくれます。
しかし、内部のサーバ(Apache)にもURLがうまく通知されていないとエラーになってしまうようなのです。

そのURLの書き換えをうまく行ってくれる機能がmod_rewriteです。
この機能を有効にすることで、もし変更があったとしてもWebサーバに対して自動的に書き換えを行ってくれるようになります。

mod_rewriteを有効にするための設定

mod_Rewriteの機能を有効にするにはApacheの

  • httpd.confファイルの設定
  • .htaccessファイルの設定

を行います。
本来、.htaccessファイルはパーマリンクの設定を行うと本来は自動的に変更してくれるのですが、自動的に変更されない場合は、.htaccessファイルを有効にする必要があります。

手順はこちらが詳しかったので、参考にしてやってみようかと思いました。

ちなみにmod_rewriteが分からない場合はこちらを読んでみましょう。

ロリポップではhttpd.confが見つからない件

私の場合、問題はここからでした。
httpd.confファイルにmod_Rewriteの機能を有効にすれば良いと分かっているものの、httpd.confが見つからなかったのです。

なぜかというと、httpd.confはロリポップでは見れない仕様だったことが原因。
ロリポップの場合、Apacheの設定はロリポップ側が行っており、自分では全く変更を加えることができないようになっていたのです。

.htaccessの書き換えを試みるも変更が適用されない

httpd.confに変更が加えられない場合、.htaccessで変更が許可されるみたいです。
そこで、でーじてとこんさんのWordPressでパーマリンクを設定してもページが404not foundになる時の対処法を参考に変更をしてみました。

あわせて読みたい
WordPressでパーマリンクを設定してもページが404not foundになる時の対処法

しかし、全く変更が適用されず404エラーを吐き続ける私のサイト。もう、どうしたら良いのやらお手上げの状態でした。

原点に帰ってWordPress側でパーマリンクを設定し直した

「こりゃもう新しくサブディレクトリを作るしかないか…。」と悩んでいたのですが、最後にパーマリンクをデフォルトにして、さらにもう一度カスタムに戻すという方法をとりました。
このようにすることで新しくリンクが繋がり直すのではと思ったのです。

ダメ元でやったのですが、意外とうまく行ったらしく正常に記事が表示されるようになりました。
なんなんや!時間返してくれ!(笑)

まとめ

環境が違うことでかなり苦戦するパーマリンクの設定…。
パーマリンクは面倒にならない内に、できればインストールしたタイミングで設定しておくことが吉ですね。

こんな記事でも、悩んでいる方のお役に立てば幸いです。