前提・実現したいこと
WordPressでサブディレクトリ型のマルチサイトを構築しようとしています。
サーバはカラフルボックスを使用しています。
発生している問題・エラーメッセージ
子サイトの「トップページ」と「WordPressのダッシュボード」が「404 Not Found」になってしまい、解決法が分からずに困っています。
正確なエラーメッセージの全文は
404 Not Found
The resource requested could not be found on this server!
です。
該当のソースコード
wp-config.phpの一部(追加した部分):
PHP
1define( 'WP_DEBUG', false ); 2 3/* マルチサイト有効化 */ 4/* 参考1:WordPressマルチサイト徹底解説 https://kinsta.com/jp/blog/wordpress-multisite/ */ 5/* 参考2:Wordpressのマルチサイト機能で複数のサイトを管理(サブディレクトリ) - WordPressの使い方と設定 - Webkaru https://webkaru.net/wordpress/multi-sites/ */ 6define( 'WP_ALLOW_MULTISITE', true ); 7 8/* WordPressでサイトネットワークを作成した時に「サイトネットワークの設置」画面で追加を指示されたコード */ 9define('MULTISITE', true); 10define('SUBDOMAIN_INSTALL', false); 11define('DOMAIN_CURRENT_SITE', 'XXXXXXXX.net'); 12define('PATH_CURRENT_SITE', '/'); 13define('SITE_ID_CURRENT_SITE', 1); 14define('BLOG_ID_CURRENT_SITE', 1); 15 16/* That's all, stop editing! Happy publishing. */
.htaccess:
#---------------------------------------------------------------------- # WordPressでサイトネットワークを作成した時に「サイトネットワークの設置」画面で追加を指示されたコード RewriteEngine On RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteBase / RewriteRule ^index.php$ - [L] # add a trailing slash to /wp-admin RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L] RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^ - [L] RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L] RewriteRule ^([_0-9a-zA-Z-]+/)?(.*.php)$ $2 [L] RewriteRule . index.php [L] #---------------------------------------------------------------------- # httpからhttpsへ!既存サイトのSSL化【WordPress】 https://claccico.com/ssl-xserver2/ # の「2-3.「.htaccess編集」でリダイレクトの設定」のコード # ※この3行の削除も試しましたが、結果は同じでした。 RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] #---------------------------------------------------------------------- # BEGIN WordPress # `BEGIN WordPress` から `END WordPress` までのディレクティブ (行) は # 動的に生成され、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 # php -- BEGIN cPanel-generated handler, do not edit # “ea-php72” パッケージを既定の “PHP” プログラミング言語として設定します。 <IfModule mime_module> AddHandler application/x-httpd-ea-php72 .php .php7 .phtml </IfModule> # php -- END cPanel-generated handler, do not edit
試したこと
・teratailで調べたこと
「wordpress」「マルチサイト」「サブディレクトリ」などの語を組み合わせて検索し、12個ほどのページを見ましたが、解決には至りませんでした。
・「.htaccess」と「wp-config.php」の変更について
上記したもの以外にも、部分的に変更や削除をして色々なパターンを試したのですが、どれも結果は同じでした。
上記ソースコード中に追記した「※この3行の削除も試しましたが、結果は同じでした。」というのもその1つです。
試した全てのパターンを示すのは煩雑になるので、本投稿では避けています。
補足情報
・SSLの設定について
2つ目のブログの作り方!WordPressを複数インストールする方法を紹介 | 初心者のためのブログ始め方講座
の「2.サーバーに独自ドメイン・SSLの設定を行う」で挙げられているエックスサーバーの手順を、カラフルボックスに読み替えて実施しました。
これにより「404 Not Found」が出るようになり、本質問の問題の状態に至りました。
これ以前にどんなエラーが出ていたのかは忘れてしまいましたが、エラーの内容が変化したので、SSLに関する設定については成功したと判断しました。
WordPressの常時SSL化対応方法 – ColorfulBox(カラフルボックス) サポートサイト
も確認済みです。
・wp-config.phpにおける改行コードの混在について
wp-config.phpの編集にはWindows10上でサクラエディタを使用していますが、変更して保存すると「改行コードが混在しています。現在の改行コードCRに統一しますか?」と出ます。
「はい」を選択した場合のwp-config.phpをアップロードしたら正常動作しないことがわかったので、以後は「いいえ」を選択するようにしています。従って、編集によって不具合が生じている可能性はないと思います。
そもそも混在しないようにできないのかと調べてみましたが、未編集の(=WordPressでサイトを作った時の状態の)wp-config.phpであってもこの質問が出るので、最初から混在している、つまりWordPressまたはwp-config.phpの仕様なのだろうと解釈しています。(なんだか理不尽だなぁとは思いますが…)
[2121/12/15追記]
その後、やはりこの点の理解がいい加減なままなのはダメだと考え直し、
改行コード – WordPressの使い方
を参考に、文字コードをUTF-8N、改行コードをLFに明示的に指定して保存するようにしました。
この点はこれで解決されたと思います。但し、発生する現象としては全く同じで、未解決のままです。
・背景など
私は主にC++で開発をしてきたプログラマですが、Webサイト構築については素人で、Apacheの設定は初めてでした。
分からないなりにできるだけWebで調べてみたのですが、自力では無理そうだったので質問させて頂くことにしました。
一般的なプログラミング言語と比較すると、本件は「何が問題なのか」の手掛かりとなるコンパイルエラーメッセージのような情報が存在しないので、手探りでやってみるしかなく、問題解決が難しいと感じています。
所見として、一見ハードルが低そう(=非エンジニアでもできそう)に見えた「WordPressによるWebサイト作成」という分野において、突然、その筋の技術者でなければ解決困難であるような問題が出てきたので驚いています。
WordPressの「サイトネットワークの設置」画面に表示される指示は、さも「この通りにやればできますよ」という感じなのに、これほど大きくつまずくとは予想外でした。
恐らく基本的な使い方だけをしている分にはハードルは低いのでしょうが、私が何気なく手を出した「マルチサイト構築」というのは、その中でも専門知識を要する領域だったのですね。
私の認識としてはそんなところですが、「みんなどうやってこの手の問題をクリアしているのだろう?」「もしApacheの技術者がこの問題を自力で解決するとしたらどうするのだろう?」と言った辺りがやはり疑問なので、後学のため、できればその辺りもご教示頂けるとありがたいです。
よろしくお願い致します。
追記
・2021/12/6 18:36
「wp-config.phpにおける改行コードの混在について」の表現におかしい点があったので修正しました。「最初から混在している」と書いているのに、その前で「混在は回避できています」と書いてしまっていて矛盾していました。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。