【ConoHa WING】WordPressでパーマリンク設定すると「Not Found」になるときの対処法

どうもLhaplusです。

最近ConoHa WINGへWordPressサイトの移行を行ったのですが、パーマリンク設定をすると記事が表示できなくなるという致命的な問題に陥りました。

その時の解決までのメモを残して置くので、同じトラブルで四苦八苦している方は参考にしてみてください。

直面したトラブル

ConoHa WINGのアプリケーションインストール機能でWordPressをインストールした後、WordPressの「設定」>「パーマリンク設定」で、パーマリンクの構造を変更しました。

SEO的には「https://ドメイン名/%postname%」の形式が一番良いので、カスタム構造で設定を行いました。

で、設定の保存は問題なく終了しましたが、いざ個別の記事にアクセスしてみると、下記の表示になってしまいます。

404 not found

ん・・・、これはと思って結構焦りましたが、パーマリンクの構造を「基本」に戻すと表示はされるようになります。

それで結構考えた結果、おそらくURLのルーティングが上手く機能していないのではと、なんとなく浮かびました。

まあ、そもそもこのエラーが出る原因はこれしか思いつきません。おそらく「.htaccessファイル」に問題がありそうです。

エラー自体の意味は、リクエストしたURLではページが見つからない、返すコンテンツの置き場所が分からないといったような感じです。

こちらの説明が分かりやすかったので引用させてもらいました。

「404」もとい「404 not found」は、クライアントからのリクエストしているページをWebサーバーが見つけられなかった時に返すコードです。Webサーバーに「あなたが見たいページ、探したけど見つからないんですけど、ほんとにあるの?」と言われている状態です。

この「ページが見つかりませんでした」ということを伝えるために表示されるページが、404エラーページです。

ソース:404エラー(not found)とは?エラーページの原因と対策方法

ここから対処法です

結論から先に言うと、私の場合は「.htaccessファイル」の編集で治りました。

でも、今回は編集というよりは「.htaccessファイル」の作成になった感じです。何故かわかりませんが、通常ならWordPressのインストール時に生成されるはずの.htaccessファイルがありませんでした。

ConoHa WINGで何か独自に制御をかけているのかもしれませんが、どっちにしろこれではパーマリンクの機能は使えません。

WordPressはインストールしたディレクトリ直下の「index.php」に全てのアクセスを流し込んで、アクセスしてきたURL構造から、どのページを表示するか制御しています。

そして、アクセスをどのファイル・プログラムに流すかの設定を担うファイルが、「.htaccessファイル」になります。

そもそも、一番重要な「.htaccessファイル」がないわけですから、そりゃーアクセスしてもどのページ開けばいいのかサーバーば分からなくなりますよね。

というわけで、「.htaccessファイル」作ります。既に.htaccessが生成されていた場合は、内容確認して、下記のコードがなかった場合は追記してください。

下記のコードはWordPress.org公式から持ってきたものです。詳しくはそちらを御覧ください。

# 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

記載できたら、ファイル名を「.htaccess」で保存した後、FTPツールまたは、CohoHaのファイルマネージャーで、WordPressをインストールしたディレクトリー直下にアップローダーします。

Windowsを使っている場合は、拡張子「.」で始まる特殊な形式で保存できないので、一度適当な名前で保存し、アップロードした後、サーバー上でファイル名を変更してください。

ConoHa WINGのファイルマネージャーを使う場合

conoha wingのファイルマネージャー「サイト管理」メニューの中で、適当にドメイン選択して、「ファイルマネージャー」クリックすると専用のページが開きます。
対象ドメインのフォルダーを探し、WordPressのインストールディレクトリー直下に移動して、.htaccessをアップロードします。
conohaサーバーに.htaccessファイルをアップロード
ConoHa WINGが用意している設定から行う←こっちが簡単
conohaの設定で.htaccesファイル編集「サイト管理」メニューの「サイト設定」>「応用設定」タブ>「.htaccess設定」からも設定できます。間違いなく、こっちのほうが簡単です。というか、最初からまっさらな状態だったので、.htaccessファイル自体作られていないというのも確認できますよね。

「.htaccess」は非常に重要なファイルなので、外部からアクセスできないように、同時にアクセス制限の設定もしておいた方が無難です。

<files ~ “\.htaccess$|^wp-config\.php$”>
deny from all
</Files>

上記のコードをそのまま前か後ろに追記してください。

一応完成イメージはこんな感じです。

<files ~ “\.htaccess$|^wp-config\.php$”>
deny from all
</Files>

# 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

これで設定保存してみて、正常にページが表示されるようになれば嬉しいですよね。私の場合は、このような現状だったので、.htaccessファイル設定したら治りました。

けど、ConoHa側もこれなんとかしたほうがいいですね。バグなのかは分かりませんが・・・

ではでは。

おすすめの記事