WordPressを使っていても、
同一サーバー内に静的ファイルを置いてそれと共存させることができます。
たとえばこんな感じで静的ファイルを置けば、
http://wordpressをインストールしたURL/pamphlet/index.html
にアクセスすれば、WordPressを介することなくこのディレクトリ内のindex.htmlが表示されます。
この場合はよいのです。
問題なのは以下のような場合。
まずWordPress側のパーマリンク設定をデフォルト以外にしていて、
abcdeというスラッグのページを
http://wordpressをインストールしているURL/abcde/
というような感じでディレクトリにアクセスしているっぽいURLにしている場合で
pamphletという部分はWordPress側でページを表示させて、その下にあるpageというページ(まぎらわしいですね…)はhtmlをそのまま表示させたい。
ですが、こういう構造になっているとWordPressでpamphletというスラッグをつけてページを作っても、こちらの存在するディレクトリを優先して読みにいってしまうので、このディレクトリには表示できるものがなにもないため403エラーになってしまいます。
どうしても解決しきれなかったので、twitterでお助け願いを出してみました。
すると@Webnistさんと@jim0912さんからすばらしいアドバイスをいただくことができました!!
私の他にも同様のことができなくて困っていた方もいらっしゃったようなので、お二人に許可をいただいたので解決方法をシェアします。
それがこちら。
WordPressをインストールしているディレクトリ内にあるindex.phpを対象のディレクトリにコピーして、index.php内にあるwp-blog-header.phpへのパスをそのディレクトリからのパスに書き換える(@Webnistさん)
こうすることによって、上位のディレクトリでWordPressの実行ファイルを読み込むようになるので、WordPress側で用意したページが読み込まれるようになります!
手順はこう。
1)WordPressをインストールしているディレクトリにあるindex.phpを、WordPressを使用して表示させたいディレクトリ(今回はpamphletのディレクトリ)にコピー
2)コピーしたindex.phpを開き、require(‘wp-blog-header.php’);の一行のパスを書き換える
3)WordPress側でページを作成し、pamphletというスラッグを設定する
以上です!
私はこうしました。
WordPressがあるディレクトリより1階層下のディレクトリだったので
require(‘../wp-blog-header.php’);
としました。
WordPressをルートにおいているなら
require(‘/wp-blog-header.php’);
でもいいと思います。
注意点としては
WordPressに付随するファイルを書き換えておかないといけないのでアップデートの時index.phpに更新がかかっていないかチェックしてあげる必要がある
とかでしょうか。
でもルートのindex.phpの中身ががらっと変わることはないんじゃないかなーとは思うのでそこまで気にしなくていいかな?どうかな?
ほかにも、
静的ページは他のWPとは干渉しないディレクトリに置いて、.htaccessで、/a/b/index.html だったら、そっちにリライトする(@jim0912さん)
というのを教えていただきました。
WordPressに付随するものをコピーしたりいじったりしなくていい方法です。
注意点としては
リダイレクトするので静的ファイルのURLが変わってしまう
.htaccessを管理画面から書き換えたりするときに注意が必要
という点があります。
どうしても解決できなかったのでどちらの方法も本当に勉強になりました!
ありがとうございました!
こういう構造にならないようにサイト設計するのが一番なんでしょうが、リニューアル案件ですでにURLを告知しているので変えられないとかやむを得ない事情でなんとかしないといけない場合も多々あると思うので、同じことで困っていたみなさん、ぜひお試しくださいね☆
教えていただいた@Webnistさん、@jim0912さん、本当にありがとうございました!!