[WordPress] サイトのURLを同階層に変更する
ちょっとトラブってパニクったので資料として残しておきます。
サイトのURLを変更する
インストール直後は、WordPressの管理ページと公開URLは同じURLになっています。
管理ページは、このURLの下に/wp-adminなどと続きますが、その上階層までのディレクトリを指定するイメージです。
で、今回はサイトのアドレスを変更する話。
サイトアドレスを変更するには
手順としては主に2つ+1。
- 管理ページからサイトアドレスを、新しいURLに変更する
- 旧サイトアドレスにあったindex.phpのパスを変更して新しいパス直下に配置する
- (パーマリンクを設定していた場合).htaccess ファイルを新しいパスの直下に移動させる
管理ページからサイトアドレスを、新しいURLに変更する
こちらは、上に画像で貼っていますが、管理ページにログインし、「設定」-「一般」に入ると上記の入力フォームが出てきます。
今回は、
http://www.hogehoge.com/wp
を
http://www.hogehoge.com/wp2
に変える想定にしましょう。
上の階層に移動する話は余所のサイトにたくさんありますのでね・・・
旧サイトアドレスにあったindex.phpのパスを変更して新しいパス直下に配置する
次に、
http://www.hogehoge.com/wp
の下にあったindex.phpを編集してwp2以下に移動させます。
index.phpの中身を見てみると以外なほどあっさりしています。
1 2 3 |
define('WP_USE_THEMES', true); require( dirname( __FILE__ ) . '/wp-blog-header.php' ); |
他はコメント文なので、これだけ。
PHPとか詳しい人ならわかると思いますが、indexページにリクエストがあった場合に
wp-blog-header.php
を読み込んでいます。
で、さらにwp-blog-header.phpから別なファイルを読み込んで・・・リクエストにあった処理をするわけです。
なので、新しい/wp2/index.phpにリクエストがあった場合に、新しいディレクトリからwp-blog-header.phpのパスを指定して読み込ませる必要があります。
で、ここの読み込みに失敗した話。
dirname( __FILE__ )とは?
dirname( __FILE__ )は、PHPの構文で、この場合は記載されているindex.phpがあるフォルダまでが取得されます。
なので、なんとなく絶対パスで書かれている風なので
require( dirname( __FILE__ ) . ‘/wp-blog-header.php’ );
を
require( dirname( __FILE__ ) . ‘/wp/wp-blog-header.php’ );
としてしまいそうですが、間違い。
index.phpは
http://www.hogehoge.com/wp2/に設置しますので、上記の例だと
dirname( __FILE__ ) は
http://www.hogehoge.com/wp2/
になってしまうので、
require(‘http://www.hogehoge.com/wp2/wp/wp-blog-header.php’);
と同義になってしまい、ファイルが読み込めないエラーになってしまいます。
PHPのエラーが表示されない状態だと、画面が真っ白になってしまい、頭も真っ白になります。
では、どう記述すればよいか
1 |
require( dirname( __FILE__ ) . '/../wp/wp-blog-header.php' ); |
が正解のようです。
こんな書き方ができるんだな〜と思いましたが、フォーラムで教えて頂きました。
これはWordPressの話というよりはPHPの話ですね。
最後にもう一つ、パーマリンクを設定している場合は、旧ディレクトリ内に.htaccessが生成されているはずですので、それも新しいディレクトリに移動しておいてください。