WordPressをサブディレクトリにインストールして、見た目場はルートで表示する。サブディレクトリにインストールすると、トップページのURLが、
- http://test.com/test
のようになるので、
- http://test.com
をトップページを表示するURLとする設定を行う。
コンテンツ
手順
WordPressをサブディレクトリにインストールする
FTPでサーバー上にWordPressフォルダ一式をアップロードし、新規データベースを作成する。
WordPressにトップのURLを教える
ダッシュボードにログインし、設定
>一般設定
へ移動し、サイトアドレスからサブディレクトリを削除する。
ただし、WordPressアドレスは変更してはいけない。
WordPressアドレス | http://test.com/test ※変更しない! |
---|---|
サイトアドレス | http://test.com/test ↓ http://test.com ※最後にスラッシュを付けない |
変更を保存
する。
http://test.com/testへアクセスすると、404が返ってくるようになる。
サーバーのファイルをコピーする
FTPでサーバーへアクセスし、testフォルダ内にあるindex.php
と.htaccess
のコピーを、testフォルダと同階層に設置する。
詳しく説明する。
WPインストール直後のサーバー、は以下のような構造になっている。
- public_htmlフォルダ
- testフォルダ
- .htaccess
- index.php
- testフォルダ
testフォルダ内にあるindex.php
と.htaccess
をローカルにダウンロードし、1つ上の階層(testフォルダと同階層)にアップロードする。
すると、以下のようになる。
- public_htmlフォルダ
- testフォルダ
- .htaccess //コピー元
- index.php //コピー元
- .htaccess //コピー先、事項の編集対象
- index.php //コピー先、事項の編集対象
- testフォルダ
コピーしたファイルを編集する
コピーした方のindex.phpと.htaccessを編集する。
index.phpを編集する
index.phpをエディターで開くと、すでに以下のような記述がされている。
およそ17行目にあるrequire DIR . '/wp-blog-header.php';
に、サブディレクトリを追記したいので、
require DIR . '/test/wp-blog-header.php';
と書き直して保存する。
.htaccessを編集する
.htaccessをエディターで開くと、すでに以下のような記述がされている。
およそ9行目と13行目からサブディレクトリを削除したいので、
RewriteBase /test/
をRewriteBase /
へ、
RewriteRule . /test/index.php [L]
をRewriteRule . /index.php [L]
と書き直して保存する。
2ファイルの編集が完了したらサーバーへアップロードする。
トップページアクセスする
http://test.com
へアクセスすると、無事トップページが表示される。
一方、http://test.com/test
は存在しないURLのため404が返ってくる。
※ルートディレクトリにはすでに.htaccessが存在していたが、上書きを行った
おまけ
.htaccess
の# BEGIN WordPress~#END WordPress
の内容は、管理画面で特定の操作をした際に書き換わってしまうため、ルートで表示する設定がいつの間にか変更になってしまうことがある。
- 「設定 > パーマリンク設定」の画面で「保存」ボタンを押すと、Wordpress側の動作で.htaccess内のリダイレクトに関する記述が巻き戻ってしまい、サイトルートへのリダイレクトがされなくなってしまう
その対策として、# BEGIN WordPress~# END WordPress
内に記述された下記のコード一式を、# BEGIN WordPress~# END WordPress
の外へコピーするという方法がある。
コピー後の.htaccess
はこちら。
コードの解説
サブディレクトリにインストールしたWordPressをルートで表示できたが、その仕組を解説する。
まず、http://test.comにアクセスがあると、.htaccessを読みに行く。
.htaccessには、index.phpを読みに行くように書かれている。
そこで、index.phpを読みに行くと、/test/wp-blog-header.phpを読むように指示が書かれている。
wp-blog-header.phpは設定の読み込みとURL解析/クエリ変換、テンプレートの読み込みを行う。読み込まれるwp-blog-header.phpはtestフォルダ内のwp-blog-header.phpなので、testフォルダにインストールしたWordPressが表示される。
という仕組み。
- WordPressをサブディレクトリにインストールしてトップページはルートにする方法
https://aya404.com/blog/develop/140_wordpress-subdirectory/ - 【Webサイトをリニューアルする時によく使ってます】WordPressを専用ディレクトリに配置する方法を解説したスライドがとてもわかりやすい
https://www.imamura.biz/blog/14061 - WordPressのページが表示されるまでの流れと仕組み
https://marycore.jp/wordpress/wp-flow/