【備忘録】【WordPress μ】Firefoxで「BuddyPress」の一部ページが正しく表示されない場合への対処法

 先日から、あることで延々悩んでおりました。

 「Telmina.com」上に仕込んだ「WordPress μ」+「BuddyPress」において、なぜかFirefoxで閲覧した場合に限り、一部ページでスタイルが反映されないという問題点がありました。

 最初、「WordPress μ」のアップデートに失敗したのが原因かと思い、ヴァージョンを戻したりスタイルシートの設定を変えたりしても、うまくゆきません。

 途方に暮れて、Firefoxのエラー・コンソールを見てみたところ、本来CSSファイルとして読み込んでくれなければならないはずの

/wp-content/bp-themes/bpmember-css/loader.php

が、HTMLファイルとして読み込まれてしまっているではありませんか。

MIME-タイプが "text/css" ではなく "text/html" となっているため、スタイルシート http://telmina.com/wp-content/bp-themes/bpmember-css/loader.php は読み込まれていません。

 …だそうです。

 ちなみに、そのファイルをどっからどう見ても、ブラウザ上からはCSSファイルとして見えるようにするための記述

header('Content-type: text/css');

が書かれているようにしか見えません。

 ちなみに、似たような記述をしている、「Telmina Back Number」のヘッダ画像ランダム取得処理はきちんと動いており、Firefox上からもきちんと当該処理ファイルがCSSとして認識されております。

 もしかしたら、「Telmina.com」全体1PHPプログラムをCGIモードで動かしているのが原因かと思ったのですが、当該処理だけセーフモードにする方法が見つかりません。

 仕方ないので、原則セーフモードで、特定ファイルのみをCGIモードにて動かす方法を検索したところ、下記サイトに有用な記述がありました。

参考記事
xreaでWordPressを利用する時の.htaccess記述例デジコム

 先方で触れられているのは、「WordPress μ」ではなく、スタンドアロン版のWordPressのお話であるようですが、先方にて提示されている記述をそのまま、「Telmina.com」の「.htaccess」ファイルに追記したところ、問題が解決しました!

 この場で恐縮ではありますが、厚く御礼申し上げます。

 なお、私がこれまで「Telmina.com」全体をCGIモードとして動かしていた理由ですが、「Telmina.com」上で、ブログをサブドメイン形式で増殖させたかったというのが理由です。

 「【業務連絡】今後のブログ統合計画について」で申し上げておりますとおり、本日以降、当ブログ、つまり現行「Telmina Ⅱ」の後継ブログを「Telmina.com」上に構築して、1週間ほど検証作業を行おうと考えておりますので、そのときに、修正後の状態でもサブドメイン形式でブログを増殖できることを確認したいと思います。

(2009/07/12 16:15追記)

 上述の方法「だけ」では、副作用が起きることが判明しました。

 少なくとも、BuddyPressにおける、アヴァター画像やグループ画像のアップロードには確実に失敗します。

 ただ、先方の方法に乗っ取って特定ファイルにのみCGIモードを適用するにも、アップロードを可能にするためにどのファイルにCGIモードを適用すればよいのかわからない状況です(情報求む!)。

 仕方ないので、当面は、

loader.php

以外のPHPファイルにCGIモードを適用するという方法で逃げることにしました。

 私が「.htaccess」ファイルに追加した記述は次のとおりです。

<files ~ "^[^l].*\.php">
AddHandler application/x-httpd-phpcgi .php
</files>
<files ~ "^l[^o].*\.php">
AddHandler application/x-httpd-phpcgi .php
</files>

 そう。「.htaccess」の「<Files>」設定では、正規表現で複数のファイルを一括指定できるにはできるのですが、特定ファイルのみを除外することはできないようです。

 仕方ないので、今回私は、次の手段で逃げました。

  • ファイル名が「l」で始まっておらず、かつ「.php」を含むファイルにはCGIモードを適用。
  • ファイル名が「l」で始まり、かつ次の文字が「o」以外であり、なおかつ「.php」を含むファイルにはCGIモードを適用。

 …せこさ爆発ですね(とほほ)。

 ちゃんと精査していないので、もしかしたら別の穴があるかもしれませんが、とりあえず、Firefoxでもちゃんとスタイルが適用され、なおかつ画像アップロードも成功しました。

 もっとクールな方法や、そもそも画像アップロードでブラウザから直接たたかれるPHPモジュールの名称をご存じの方がいらっしゃいましたら、教えて下さい。


  1. ここでは、サブドメイン配下は含まない。つまり「Telmina Back Number」も含まない []
この記事はWordPress, 備忘録に投稿されました タグ: , , , , , , , . このパーマリンクをブックマークする。 コメントとトラックバックは現在受け付けていません。
  • QR Code

    • お使いの端末によっては表示されないことがあります。