wordpressのthemeのindex.phpが500エラーを出す

この記事は約2分で読めます。
スポンサーリンク

wordpressのthemeフォルダにはindex.phpが必須とされている。
しかし、ここには一つ問題が発生することがある。
themeファイルのindex.phpへサーチエンジンが検索してアクセスすることがある。
考えられる原因としては、themeファイルの中の素材を参照して、そのディレクトリトップへページがないかアクセスを試みる。その際に、ファイル名が指定されていない時に、index.phpが呼び出しされる。
こんなところであると思う。
その時、ただのphpファイルとして呼び出しがされてしまうので、wordpressのパーツの一部として作成されているindex.phpはエラーになってしまう。

Apacheだと、これが通常500エラーとして出てくる。
考えられる対策としてindex.phpをスラッシュでURLが終わった時に呼び出さないようにすることだ。
.htaccessをthemeフォルダに作って以下のように記述する。

DirectoryIndex index.html

こうするとindex.phpは呼び出さないようになる。

しかし、そもそもパーツであるテーマフォルダのPHPファイルを直接呼び出せること自体がよろしくない。

<Files ~ "\.php$">
  deny from all 
</Files>

この記述をthemeフォルダの中へ.htaccessを作成して記述してやることで、themeフォルダの.php拡張子には接続ができなくなる。

なお、nginxでの対策は以下をconfへ書けば良い

  location ~* ^/wp-content/.*\.php$ {
        deny all;
        access_log off;
        log_not_found off;
  }

コメント

タイトルとURLをコピーしました