WordPressのカスタマイズ方法やプラグインレビューを中心に、パソコン/動物/植物のことなどを紹介するホームページです

さくらインターネットでのWordPressサイト構築は最初にルート化した方がいい理由

公開日:2018(平成30)年12月14日/最終更新日:

WordPressに関する情報



【景品表示法に基づく表記】ページ内のコンテンツには、商品プロモーションが含まれています

昔から安定稼働していて人気のあるサーバー【さくらインターネット】。お使いの方も多いと思います。

このサーバーでは他のサーバーと同様にWordPressの自動インストール機能があり、おそらく自動インストールを使われる方が100%なのではないかと思います。

自動インストールするとき、何も気にせず「はい」「はい」って進めていると、「/wp」というフォルダにインストールされますよね?もちろん任意のフォルダへインストールすることも可能です。でもなぜか、ルート(http://hogehoge.comというドメイン名そのものでアクセスできる場所)は指定ができないようになっています。

他サーバーではルートにインストールできるのに何で?って感じです。ちなみにルートを指定しようとして「/wp」などの階層を空白にするとインストールはできませんから、下層へのインストールは必須ということになっているようです。

でも・・・そのサイトへアクセスするためには「http://hogehoge.com」では表示されなくて、「http://hogehoge.com/wp」と入れないといけないですからこれも具合が悪いですよね?(ちなみに「http://hogehoge.com」へアクセスすると権限がありましぇーーんって英語で表示されてしまいます)。

これを解消するために「/wp」という階層のものを「/wp」なしでアクセスできるようにする方法がたくさん紹介されています。それほど難しい設定ではないのでそうしておけば問題ないのですが・・・

その方法を使うと、サイトの表示は「http://hogehoge.com」、管理画面は「http://hogehoge.com/wp/wp-admin」となるのはご存知の通り、でもそれが元で問題が発生したのです。

問題はWordPressのインストールフォルダと同じスラグを持つコンテンツがある場合の動作

今回は知り合いからとあるサイトで常時SSL化と下層にあるサイトをフォルダ名なしで表示できるようにしてほしいという内容でした。

まあいつもやってるし簡単簡単ということで早速作業開始、SSL証明書が割り当てられるまでの時間を除けはあとは数分作業です。

で、一応フロントエンドからの表示チェックときちんとSSL通信されているかのチェックをし、バックエンドで動作がおかしくないかをチェックしました。

すると・・・投稿編集画面からプレビューしたら「ページがありません(いわゆる404エラー)」になるんです。

今まで経験したことがない現象、なんで~~~???

でよく調べたら、固定ページに同じスラグを持つページがあったんです。

その人のサイトはドメイン名フォルダの中の「/blog」という階層にWordPressがありました。そして外部のブログへリンクするための固定ページにもなんと「/blog」というページが存在したんです。

内部でどんなことが起こっているかを簡単に説明すると、ルート(ドメイン名)へアクセスしたものを「/blog」へ転送してそこにあるWordPressを動かして・・というあまた紹介されている「/wp」を取るのと同じ作業をしたわけですから、表示画面上(公開された記事などを見る上では)全部のページのスラグは「https://hogehoge.com/〇〇」となるのですが、管理画面では「https://hogehoge.com/blog/〇〇」で管理されるのでプレビューすると「https://hogehoge.com/blog/プレビュー用のスラグ」という風になるんです。

すると・・・そもそも固定ページに「/blog」があるのでその中の子ページとして「プレビュー用のスラグを持つページがある」と判断されるんです。

当然そんなページはありませんから「ページがありません(いわゆる404エラー)」となるんですね。

そんなの固定ページの「/blog」を取ればいいんでしょ!!と思った方、残念です・・・。WordPressにはOld Slugという機能があって、途中でスラグ(パーマリンク)の変更を行うと、それ以前のものは別の場所に格納され、古いアドレスにアクセスすると転送されるようになってるんです(確かバージョン4.6位からこの仕様になってたかと思います)。つまり固定ページのパーマリンクをいくら変えても最初に設定した「/blog」は残るんですね。したがってこの方法では問題解消できないんです。

でどうしたか??というのをここから書きます。まあレアケースですからスラグが被ったなんて経験はまずないでしょうが、もしも「/wp」を取って同じようにプレビューなどで不具合が出たら疑ってみてもよさそうです。

フォルダ名と特定のページスラグが被って不具合が発生したときの対処

フォルダ名を変える

固定ページが変更できないならそもそもWordPressのインストールフォルダを変更すればいいのでは??これでもきちんと動作するようになります。

この方法は

  1. 管理画面で「wordpressアドレス」を「/blog(ここはフォルダ名によって違います)」とは別のものにし、「サイトアドレス」を「/blog」なしにする
  2. サーバーのファイルマネージャーでフォルダ名を変更する
  3. 変更したフォルダ名の中にある「.htaccess」と「index.php」を開いて「/blog(ここはフォルダ名によって違います)」になっている部分を変更したフォルダ名にする

という手順できちんと動作するようになります。

※サイト内コンテンツの画像や内部リンクURLは変更する必要があります

そして、「/wp」を取る設定をしたルートの「.htaccess」と「index.php」も同じように新しいフォルダ名へ変更して完了!!

こんな流れですべてが完了します。

1の手順を飛ばして作業してしまうとサイトの表示も管理画面も表示できなくなるので絶対に飛ばさないでくださいね。もしもやらかした場合にはデータベース内のwp_options.phpで修正をする必要があります。これをしたくないので最初に管理画面上で変えておくのです。

ルートにすべてを移す

まあまあ上の方法で十分解消できるのですが、そもそも何で下層フォルダでWordPressを動かす必要があるの?と感じたので、今回はルートへ「/blog」にあるすべてのファイルとフォルダをコピーして動作するようにしました。

この方法の場合も似たようなことをします

  1. 管理画面で「wordpressアドレス」と「サイトアドレス」を両方「/blog(ここはフォルダ名によって違います)」なしにする
  2. サーバーのファイルマネージャーで「/blog(ここはフォルダ名によって違います)」にあるファイルをすべて上位フォルダへコピーする
  3. ルートフォルダの中にある「.htaccess」と「index.php」を開いて「/blog(ここはフォルダ名によって違います)」になっている部分から/blogの部分を削除する

これでルートで表示できるようになります。

※下層フォルダは念のためそのままにしておき、フォルダ名をあり得ないものに変更しておけばトラブルを防げます

上と下の方法の大きな違いは管理画面のアドレスがフォルダ名ありになるのかどうかということ、下の方法では表示画面も管理画面も「/フォルダ名」なしでアクセスできるようになります。

フォルダやファイルのコピーはファイルマネージャーでやった方が無難

さくらサーバーのFTPって何か不安定なんですよね。通常はFTPの方が信頼できるので一旦ファイルやフォルダをパソコンに保存(バックアップ)してルートにアップロードすればいいんですけど、今回その方法でやったら見事に失敗しました(ファイルの欠落や転送エラーなどはないのに何で?って状況でした。)。

さくらサーバーのファイルマネージャーには「別の場所にコピーする」というメニューがあるので、「/wp」にあるファイルとフォルダすべてを選択して「右クリック」→「別の場所にコピーする」を実行し、よーくコピーする場所を確認してから「上書きしますか?」のアラートに「はい」とすれば結構短時間でコピーできます(このアラートはコピー先が空でも表示されます)。

内部でコピーするのでFTPよりも速いし確実です。

※コピーメニューが不安であれば、一旦何かしらのファイルをコピーしてみてきちんと思った場所にコピーされたか確認してみるといいでしょう

QA AnalyticsQA Analytics

そもそも何でルートに自動インストールできないのか?を考えた

こんな現象が起こる可能性はゼロじゃないのに何でルートにインストールできないようにしてるのか?を考えてみました。理由としてあげられるのは以下の2つ

  1. 閲覧用のURLと管理用のURLを別にすることでセキュリティがアップする
  2. 自動インストール時にルート上に別の同名ファイルがあったときに上書きして壊れてしまうのを防ぐ

考え方によってはどちらも大事かも知れませんが、多分2の要素が大きいのだと思います。例えばすでに1つWordPressサイトがルートにあったとして、下層フォルダに別のWordPressを自動インストールしようとしたとき、ルートが選択できてしまうと元のサイトへ上書きすることになってしまって「サイトが表示されなくなった・・」となりますからね。

他にもルートには何もない状態にした方がファイルマネージャーやFTPで見た時にすっきりする・・・なんて理由もあるのかも知れないですが、ルート(ドメイン名)でアクセスしたときのWordPressの関連ファイル類が別の下層フォルダの中にあるっていうことの方がよっぽど気持ち悪いと私的には感じます。まあこの辺は考え方と慣れ次第ですけどね。

ルートではなく下層にインストールすることが必須のさくらインターネットサーバー、自動インストールを行う場合には一旦下層のフォルダへインストールしてからルートへ引っ張り出すか、最初からルートへ手動でインストールすると分かりやすく使いやすいかもしれません。