WordPress

WordPressでindex.phpとindex.htmlの両方を表示できるようにする

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’] );

WordPress 5.1.4では416行目にありました。

この一文をコメントアウトで無効にすると、次のように表示されるようになります。

http(s)://ドメイン名/ → index.html
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

Leave a Comment