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;
}
コメント