どもです。
最近、めっぽう朝に弱い餅。です。
今回もWordPressの話。
WordPress積み込むときって、ディレクトリ構造は割とサーバーやユーザーの都合によってバラバラですよね。
例えば、当サイトはhttpdocs直下に展開してますが、たぶんこれはレアなケース。
一般的には、httpdocs/wp/とかこういうのが多くて、サーバーの自動インストールを使ったりすると、httpdocs/cp-bin/wp/とか更にディレクトリが増えたりする。
けど、サイトのURLとしては「ドメイン/カテゴリ/記事名」とかそういうのが好ましいですね。
そこで使うのが管理画面の「設定/一般」のこれ。
この、「サイトアドレス」の方を変更することで、サイトのURLが変わります。
くれぐれも「WordPressアドレス」の方を変えてはいけません。第三次です。大惨事です。
その後、「パーマリンク設定」から設定を保存。
で工程は終わりなのですが、これだけでは上手くいってくれないことがあります。
具体的にはサイトが404エラーになります。
前置きが長くなりましたが、今回はそういうときの対策法。
まず、サイトアドレスで指定したディレクトリの「.htaccess」を探します。
無かったら作ります。
で、中身に以下のものが書かれているかチェック。
<IfModule mod_rewrite.>
RewriteEngine On RewriteBase / //(「サイトアドレス」がhttpdocs直下なら「/」、それ以下ならその分のurlを記述)
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L] //(こちらも「サイトアドレス」に準拠)
</IfModule>
次はhttpdocs直下のindex.phpをチェックです。無ければWordPressのトップディレクトリに入っているのを持ってきます。
で、
require( dirname( __FILE__ ) . '/wp-blog-header.php' );
と書かれている部分があるので、ここを
require( dirname( __FILE__ ) . '/wp/wp-blog-header.php' );
などに変更します。この変更部分の記述法ですが、
/(indexを置いたディレクトリからWordPressのトップディレクトリまでの道のり)
です。
ですから、cp-binの中にwordpressというフォルダが入っていた場合、記述は
require( dirname( __FILE__ ) . '/cp-bin/wordpress/wp-blog-header.php' );
となります。
大体はこれで解決すると思います。
2/14追記
記事の例はWordPressのURL変更で最も一般的な「サブディレクトリに置いたWordPressをルートディレクトリに表示する」方法でしたが、他のケースもあります。
例えば、「WordPress」がルートディレクトリの外のフォルダにある場合。
サーバーの自動インストールを使うと、サーバーにもよりますが、こうなることがあります。
そういうときはindex.phpに書いたURLを絶対パスで指定します。
.htaccessのphpエラーを表示にすることで、「dirname( __FILE__ )」の部分に表示される絶対パスをコピーし、WordPressのインストールディレクトリに合わせてみるのが万能な解決手段だと思います。