web-dev-qa-db-ja.com

mod_rewriteは有効ですが、固定リンクはindex.phpを表示します

Mod_rewriteが有効になっているLAMPスタックにフレンドブログをインストールしたところです(同じサーバーにインストールされている私のDrupalのきれいなURLに使用しています)。何らかの理由で、WordPress(3.0.3)はmod_rewriteが有効になっていることを認識しません。 PermalinksメニューにはPATHINFOパーマリンクのオプションが表示されています(url文字列の前にindex.phpが付いています)。

今のところ私が修正したのはカスタム構造フィールドを使い、index.phpの部分にWordPressが挿入しようとしている部分を少なくして入力することでした。

これは3.0.3の異常ですか?サーバー構成を調査する時間はあまりありませんでしたが、ガイダンスをいただければ幸いです。

4
bhamrick

$ _SERVER ['SERVER_SOFTWARE']の出力はWebServerXです。

それはあなたの問題のように見えます - wp-includes/vars.phpのこの行をチェックしてください:

/**
 * Whether the server software is Apache or something else
 * @global bool $is_Apache
 */
$is_Apache = (strpos($_SERVER['SERVER_SOFTWARE'], 'Apache') !== false || strpos($_SERVER['SERVER_SOFTWARE'], 'LiteSpeed') !== false);

プラグインまたはテーマのfunctions.phpのいずれかで、この変数を手動でオーバーライドする必要があると思います。

global $is_Apache;
$is_Apache = true;

@ John P Blochの小道具:

パーマリンクに 'index.php'が自動的に追加されるのは、$ is_Apacheがfalseを返す場合だけです。

4
TheDeadMedic

あるいは、次のコードをfunctions.phpファイルに追加することもできます。

add_filter( 'got_rewrite', '__return_true', 999 );

これはWordPressがnginxとうまく動作するようにするためです。

2
heintore