ルート直下にディレクトリを設置してインストールしたWordPressのURLをルートに設定する方法

ルート直下にディレクトリを設置してインストールしたWordPressのURLをルートに設定する方法

サーバーのルート(サーバーによりwwwであったりpubalic_htmlなど)ディレクトリの直下に「wp_sample」というディレクトリ名でWordPressをインストールした際、/www/wp_sample/にWordPressがインストールされているので、そのままであれば、公開側から見た場合、http://example.com/wp_sample/にWordPressのトップページが表示されます。

しかし、http://example.com/にトップページを表示させたい場合もあると思います。

サーバー側の設定でドメインのルートを変更できますが、今回はWordPressの設定側からルートを変更するやり方を解説します。

WordPress管理画面の設定

まずはWordPressの管理画面の「設定」メニューを変更します。

インストールした初期の状態では、「WordPressアドレス(URL)」と「サイトアドレス(URL)」は両方「http://example.com/wp_sample」となっておりますが、「サイトアドレス(URL)」のみ「http://example.com」に変更して「変更を保存」ボタンで設定側を反映させます。

ルート設定イメージ

このとき間違って「WordPressアドレス(URL)」を変えてしまうと、実際にWordPressがインストールしているディレクトリの指定が変更されてしまうので、管理画面にアクセス出来なくなり大変なことになってしまいます。
※私も最初の頃はここをいじったりして焦りました。

もし、ここをいじってしまった場合はFTP側からconfigファイルを修正して「WordPressアドレス(URL)」の部分を元に戻す必要があります。

具体的なやり方としては、WordPressをインストールしたディレクトリ直下にあるwp-config.phpに下記の一行を追記してサーバーのwp-config.phpファイルを上げ直せば、「http://example.com/wp_sample/wp-login.php」で再びログインする事ができます。

define('WP_SITEURL', 'http://localhost/wptest');

/* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */

wp-config.phpファイルの「編集が必要なのは…」の直前に記述して保存、上書きでOKです。

index.phpファイルの移動

上記のWordPress管理画面側の設定が完了しただけでは、http://example.comにトップページは表示されません。おそらくアクセスを試みてもファイルがありませんと怒られる(エラーが出る)はずです。

そこで今度はWordPressが入っているwp_sampleディレクトリ直下のindex.phpファイル(wp_sample/index.php)をサーバーのルート直下に移動させる必要があります。
移動にともない、index.phpファイルは一か所修正が必要になります。

require( dirname( __FILE__ ) . '/wp-blog-header.php' );

↓

require( dirname( __FILE__ ) . '/wp_sample/wp-blog-header.php' );

wp-blog-header.phpへのパスを「/wp_sample/wp-blog-header.php」に変更します。

さてこれでWordPressのトップページがhttp://example.comに表示がされたはずです。

.htaccessの設置

トップページが表示されるようになりましたが、パーマリンク設定している場合、このままでは下層ページがうまく表示されないはずです。ということで今度はルート直下に.htaccessを設置します。

.htaccessは「設定>パーマリンク設定」で変更を保存した場合WordPressのディレクトリ直下に生成されます。(ここでは/www/wp_sample/.htaccess)

.htaccessの中にWordPressのルーティング(URL構造)設定が記述されてますので、それをルートディレクトリ直下/www/.htaccessに移動させます。

これでトップページの表示はもちろんサイト内のページの表示も通常通りされたかと思います。

 

最後に気をつけてほしいのは、サイト内のリンクの設定です。

<a href="<?php echo esc_url(home_url('/')); ?>site-map/">サイトマップ</a>

テンプレートファイルなど上記のようにサイト内のリンクのパスに上記の関数を利用していれば特に問題ないのですが、もしパスの指定に設定前のディレクトリ名(ここではwp_sample)が入っている場合はリンクがうまくされませんので、修正が必要になります。

作業をまとめると

・管理画面>一般設定>サイトアドレス (URL)を一階層上に変更

・WordPress直下にあるindex.phpを一階層上に移動

・移動したindex.php内のwp-blog-header.phpまでのパスを変更

・すでにWordPress用の.htaccessがある場合はこちらも一階層上に移動(場合によってはファイルの設定変更が必要です)

※作業する前にはファイルなどのバックアップを強くおすすめします。途中でよく分からなくなっても、最悪元の状態に戻せるようにしておきましょう。