WordPressのインストールディレクトリを移動する方法をまとめます。
レンタルサーバの機能でWordPressをインストールすると、自動的にサブディレクトリ(/wpなど)にインストールされるが、これをルートディレクトリ(/)に移動したいなどという場合です。
WordPressは、/wpなどのサブディレクトリにインストールし、index.phpや.htaccessなどの働きにより、ルート(/)ディレクトリで公開できるようにするのが普通です。
しかし、この状況で、一部のプラグインが期待どおりに動作しなかったので、その対策として「インストールディレクトリ」=「公開ディレクトリ」として、しかも「公開ディレクトリ」=「ルートディレクトリ」として結果的にうまく動作させることができました。
すでに稼働中のサイトで、インストールディレクトリを変更する場合全般に使えますので、参考になれば幸いです。
また、かなりの力技になりますので、その点をご留意ください。
最初に、経緯説明です。
最近Cocoonという無償のWordPressプラグインを使い始めました。以前は同じ作者によるSimplicityというプラグインを、使い勝手が良くシンプルさが気に入っていて愛用させていただいておりましたが、事実上の後継ということで、新しいこのプラグインに乗り換えようと思ったのです。
しかし、Cocoonを使っていて気付いたことは、あるときからスキンの切り替えがまったく反映されなくなった!ということなのです。これはおかしいと思い、Cocoonのサポート掲示板などを見ましたが、同様の指摘はあるにしても解決策は特に講じられていないようなので、レンタルサーバ(この場合は「お名前.com」)のせいもあるかもしれないと、自前での解決を試みたのです。
このように、どのようなスキンを選んでも、プレビューの表示は変化しません。もちろん、設定の変更は[変更をまとめて保存]で逐次反映しています。これはおかしいと思い、[Cocoon設定]の[テーマ情報]を見ると、「スキン」の行がほかと違うことに気づきました。
抜き出してみると、「スキン」の行だけ、インストールディレクトリである「/wp」が付いていません。
子テーマスタイル:/wp/wp-content/themes/cocoon-child-master/style.css
スキン:/wp-content/themes/cocoon-master/skins/m-sora/style.css
スキンのCSSが無視されているのが原因だろうということで、Cocoon側で何とかしてくれるのを待たずに、/wpなしでも済むようにWordPress自体を/wpの上に移動してしまおうというわけです。
公開ディレクトリの.htaccessとindex.phpのバックアップを取る
FTPクライアントアプリで、サーバの公開ディレクトリ(/)にある.htaccessとindex.phpをローカルにダウンロードしておきます。
この2つのファイルは非常に重要ですから、作業が終わるまで残しておいてください。いざというときに元の状態に戻すために必要です。
インストールディレクトリをダウンロードする
同様にFTPクライアントアプリで、サーバのWordPrressインストールディレクトリ(/wp以下)をローカルにダウンロードしてください。ファイルが多いので、結構時間がかかります。
このディレクトリも、作業が終わるまで残しておいてください。上記の2つのファイルと同様に、いざというときに元の状態に戻すために必要です。
インストールディレクトリをアップロードする
そして、ローカルにあるインストールディレクトリ(/wp以下)のすべてのファイル/ディレクトリを、サーバ側のルート(/)ディレクトリにアップロードします。これも、ダウンロードと同様に結構時間がかかります。
なお、アップロードでは.htaccessとindex.phpがすでに存在するので確認を求められますが、これは「必ず」スキップしてください。
インストールディレクトリの情報を書き換える
最後に、WordPressのダッシュボードを開き、[設定]から[一般]の中にある「WordPressアドレス(URL)」の項目から「/wp」を取り除き、保存します。
この瞬間、/wp以下のファイルは使わずに、/以下のファイルを使うように内部的に設定が書き換えられます。
しばらく待たされた後、再度ログインしてくれと促されますので、現在のURLから「/wp」を取り除いたもので改めてページを開いて、ログインし直します。
今度は、スキンがきちんと反映されていることが確認できます。
テーマ情報も、基点がルートになっていることが確認できますね。
公開ディレクトリの.htaccessの確認とindex.phpの修正
最後に、サーバの公開ディレクトリ(/)にある.htaccessとindex.phpの2つのファイルの内容を確認、index.phpの方は修正しておきましょう。
FTPクライアントアプリから.htaccessをテキストエディタを開くと、下記の内容になっているはずです。
.htaccess
# 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
このファイルに書かれていることの意味は、下記の通りです。
- サーバのRewriteEngine(URLの書き換え機能)を有効にするよ。
- 基点はルート(/)だよ。
- index.phpとリクエストが来たらそのまま処理するよ。
- 要求されたファイルかディレクトリが存在しなければ、すべて/index.phpに委ねてちょ。
WordPressたらしめるための基本となるファイルと言えましょう。
このファイルの修正は必要ありません。
次は、index.phpです。目につくのがコメントばかりなので、下記からは取ってしまっています。
index.php(変更前)
<?php
define('WP_USE_THEMES', true);
/** Loads the WordPress Environment and Template */
require( dirname( __FILE__ ) . '/wp/wp-blog-header.php' );
ここでは、require行の読み込みファイル名が重要です。
古いインストールディレクトリ(/wp)にあるwp-blog-header.phpを読み込みに行き、そこにコントロールが移るようになっています。
ですので、これを削除して新しいインストールディレクトリ(/)にあるwp-blog-header.phpを読み込むように、ファイルを置き換えます。
index.php(変更後)
<?php define('WP_USE_THEMES', true); /** Loads the WordPress Environment and Template */ require( dirname( __FILE__ ) . '/wp-blog-header.php' );
index.phpにリクエストが来たら、公開ディレクトリ(/)にあるwp-blog-header.phpを読み込みに行き、そこにコントロールが移ります。
メディアファイル等のURLを修正する
メディアを使用している場合、そのURLはインストールディレクトリ(/wp)を反映したものになっています。
<src>タグや<a>タグに含まれるURLには、古いインストールディレクトリ(/wp)が残ってしまっているので、この削除が必要です。
これらのURLはコンテンツの一部になってしまっているので、WordPressの設定の管理外というところが歯がゆいです。
削除の方法は、とりあえず下記の通りです。
- 投稿や固定ページ、メディアが少ない場合には手作業で修正する。
- 多い場合には、Search Regexなどのプラグインを用いて一括修正する。
ここでは詳しく取り上げませんが、個人的には後者が良いと思います。似たような機会が発生した際に役立つと思いますので。
「uploads」までを含んだマッチングで、そのまま置き換えてしまえば良いのかな、と思います。
https://nekketsu.naosan.jp/wp/wp-content/uploads/
↓
https://nekketsu.naosan.jp/wp-content/uploads/
下記のサイトを参考にしてみてください。
WordPress の記事内容を一括で置換できるプラグイン Search Regex
使用しないインストールディレクトリを削除するか無効にする
これまでのインストールディレクトリ(/wp)は不要になりましたので、削除して構いません。不安ならリネームして使えないようにしておき、問題ないことを確認してから削除してもよいです。
ローカルにダウンロードしたファイルも、問題ないことを確認してから削除してしまって構いません。
以上で作業は終了です。
コメント