wordpressではindex.phpがトップページとして表示されますが、index.htmlが同じ階層にある場合は、リダイレクトされてindex.htmlの内容が表示されます。
通常はindex.htmlを削除してしまえば解決なのですが、wordpressを導入する案件で、クライアントから一時的にindex.htmlをindex.phpの両方を見たいと言われたので、その際に行った方法を紹介します。
index.phpとindex.htmlを共存させる
index.phpとindex.htmlを両方表示させるようにするには、canonical.phpを編集する必要があります。
canonical.phpはwordpressディレクトリ内の「wp-includes」フォルダにあります。
wordpressのバージョンによって、記載箇所が異なるのですが、以下のコードをコメントアウトします。
canonical.php
$redirect[‘path’] = preg_replace( ‘|/’ . preg_quote( $wp_rewrite->index, ‘|’ ) . ‘/*?$|’, ‘/’, $redirect[‘path’] );
$redirect[‘path’] = preg_replace( ‘|/’ . preg_quote( $wp_rewrite->index, ‘|’ ) . ‘/*?$|’, ‘/’, $redirect[‘path’] );
WordPress 5.1.4では416行目にありました。
この一文をコメントアウトで無効にすると、次のように表示されるようになります。
http(s)://ドメイン名/ → index.html
http(s)://ドメイン名/index.php → index.php
http(s)://ドメイン名/index.php → index.php
なお、index.phpを優先したい場合は、canonical.phpではなく、.htaccessに以下の一文を追記します。
DirectoryIndex index.php index.html
これで次のように表示されるはずです。
http(s)://ドメイン名/ → index.php
http(s)://ドメイン名/index.html → index.html
http(s)://ドメイン名/index.html → index.html
Leave a Comment