index.htmlとindex.phpを共存させる方法

WordPressをインストールする際、WordPressのファイルが入ったフォルダ、例えば「wp」などのディレクトリをURLに入れたくない場合、WordPressファイルからindex.phpを親階層へコピーすると思います。

こんな状態のとき

このとき、新規のサイトなら問題ありませんが、既存のサイトへブログを追加したいときはindex.htmlとindex.phpがかち合ってしまい、どちらかが見ることができない状態となってしまいます。

僕の場合はもう少し複雑で、インストールしたWordPressをマルチサイトで運用し、且つ親サイトは使わない、既存のindex.htmlを生かしたい、という状況でした。でも親階層にコピーしたindex.phpも生きてないと子サイトを表示することができないので悩んでいました。

これを回避させる方法を調べたのでそのメモです。

リダイレクトの調整

WordPressのコアファイルをいじる必要があり、WordPressのアップデートでファイルが上書きされてしまうと元に戻ってしまうため注意が必要です。できれば触りたくないファイルですので、そこを理解できた方だけ進みましょう。

「wp-includes」フォルダにある「canonical.php」ファイルを探してください。

見つけたらファイルを開き以下のコードをコメントアウトします。

$redirect['path'] = preg_replace( '|/' . preg_quote( $wp_rewrite->index, '|' ) . '/?$|', '/', $redirect['path'] );

WordPress 5.6.1では500行目と576行目の2箇所にありました。調べたサイトだと2箇所なんて書いてないけど・・、まぁ大丈夫。両方コメントアウトしちゃいました。自己責任でお願いします・・。

これでindex.htmlとindex.phpどちらにもアクセスできるようになりました。

優先順位の調整

上記でどちらへもアクセスできるようになったのはいいのですが、ファイル名の指定がなかった場合は「index.html」が表示されて欲しいところだったのですが、「index.php」が表示されてしまいました。phpとhtmlの優先順位はサーバーによって異なるらしいので、確認してみてください。

優先順位を変更するため「.htaccess」を編集します。

WordPressサイトのURLを変更した際「index.php」と同階層に「.htaccess」もコピーしたかと思います。そちらを編集していきます。

以下の一文を追加します。

DirectoryIndex index.html index.php

これにより、ファイル名を省略したアクセスがあった場合は「index.html」が優先されて表示されるようになりました。いやーややこしい。

コメントを残す

ページ先頭へ ↑

GaraKutaをもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む