かなり久しぶりにこの現象になったのでメモ。
パーマリンクの「カスタム構造」にて、なぜか頭にindex.phpが勝手に入る現象が発生。
消すことはできますが、そうするとページが開かなくなるという困った状態になります。
Codexを見てみると、「PATHINFO: "Almost Pretty"」という形式になっているらしい。
いわく
PATHINFO パーマリンクは、途中に /index.php が挿入されるという差異の他は、mod_rewrite パーマリンクによく似ています。
とのことですが、いやいや全く持って似て非なるものですよ。
というわけでいろいろと調べた結果、htaccessを直接記述すればよいとのこと。
以下、例は「ドキュメントルート/wordpress」にインストールしていると仮定してください。
ドキュメントルートにそのままおいている場合は「wordpress/」部分はいらないはずです。
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /wordpress/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wordpress/index.php [L]
</IfModule># END WordPress
これをwordpressフォルダにアップロードしたところ、「カスタム構造」の設定でもページが開くようになりました。
なお、マルチサイト化すると、「パーマリンク設定」画面の「カスタム構造」では強制的に「/index.php」が入るようになるため、上記の方法では直せなくなります。(正確にはネットワーク設定で「/index.php」は削除可能なのですが、その後のhtaccessの設定がうまく行きませんでした。)
この状態になった場合は、このサイトに書かれている方法が非常に有効です。
wordpress のパーマリンクに index.php がはいって困ったの巻 | ちからの備忘録的日記
要するに、どこかのプラグインに
add_filter('got_rewrite','__return_true');
を潜り込ませて、有効化すればOK。
これで、「パーマリンク設定」画面で編集してもindex.phpが入ることはなくなるし、htaccessも特に編集することなく(マルチサイト化したときの初期の設定のもので)ページも正常に開くようになります。