web関連

【wordpress】下層ディレクトリのデモ環境をルートの本番環境に設定する方法

【wordpress】下層ディレクトリのデモ環境をルートの本番環境に設定する方法

お客さんのサイトをリニューアルして公開するときに、いつもはさくらサーバーにドメインを追加してドメインの向きを下層ディレクトリのデモ環境に向けてデータベースのurlを一括置換していました。
ある日「それ違う」と先輩に言われ下層ディレクトリのデモはそのままでルートディレクトリに上げる方法で公開したので備忘録。(簡単だった)

必要な作業とファイル

  • サイトアドレスを公開用のurlに変更する作業
  • index.php(wp-contentとかと同じ階層にあるやつ)
  • .htaccess(wp-contentとかと同じ階層にあるやつ)

サイトアドレス (URL)の変更

管理画面の「設定」→「一般」→「サイトアドレス (URL)」から下層ディレクトリ名を削除する

// 修正前	
https://sample.com/wp
// 修正後
https://sample.com
間違って「WordPress アドレス (URL) 」を修正すると管理画面に入れなくなるのでphpmyadminとかでデータベースに入って「wp_options」の「home」の箇所を直せばもとに戻る。

index.phpを編集

下層ディレクトリのデモ環境の「index.php」をダウンロードして、一番下の行を以下のように修正します。

【修正前】
require( dirname( __FILE__ ) . '/wp-blog-header.php' );	
【修正後】
require( dirname( __FILE__ ) . '/下層ディレクトリ名/wp-blog-header.php' );

※「下層ディレクトリ名」の部分にデモ環境のディレクトリ名を入れます。

修正が完了したらルートディレクトリにindex.phpファイルをアップロードすると、サーバーによっては「.htaccess」が勝手に生成されたりします。

さくらレンタルサーバーでやったら、index.phpをアップロードしただけで.htaccessが生成された
もしかしたら「パーマリンクを更新(.htaccess生成するやつ)」押してたかもしれんけど…

.htaccessを編集

勝手に生成されない人は、下層のwp-contentとかがあるディレクトリから「.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	
【修正後】
# 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

「下層ディレクトリ名」を削除しただけですが、こちらをindex.phpをあげたところと同じルートディレクトリにアップロードして頂ければ下層ディレクトリのデモ環境をルートディレクトリの本番環境に反映は完了となります。

補足

デモ環境で「php.cgi」を使って本番に影響を与えないように疑似的にPHPのバージョンを上げてたら本番環境も上げる必要がある

公開作業していて気が付いたので補足です。

まとめ

下層ディレクトリのデモ環境を今回の方法で、本番環境にあたるようにするとメディアでアップロードした画像のurlや固定ページのリンクを修正しなくても本番URLにリダイレクトされる(さくらだけかも…)のでとても楽でした。

いつもはムームーで取得したドメインをさくらサーバーに登録して、ドメインの向きをさくらサーバー側で下層ディレクトリに向けて作業をしていたけどこれだったら外部DNS(ムームーとかでAレコードをサーバーに向ける)とかでも扱いやすくてとてもいいと思う。