• 締切済み

RewriteRule force MIME typeの仕様と使用

RewriteRuleでMIME typeを変更する方法ですが、 RewriteRule ^(.+\.hoge)$ $1 [T=image/jpeg] と書いてみましたが、デフォルトのtext/plainになっているようです。 [T]フラグを使うのは.htaccess以外の何か設定が必要なのでしょうか。 テストサーバーはLinux Apache2.0.54です。 公開の(実際に使用する)時のサーバーはホスティングサービスで、Linux、Apache2.0.52です。 こちらで設定出来なければサーバーの負荷が高くなりますが、CGIを経由する方法を採ることにします。

みんなの回答

  • php504
  • ベストアンサー率42% (926/2160)
回答No.1

書き換えしないのであれば AddType image/jpeg .hoge ではだめでしょうか

taloo
質問者

お礼

他のBBSやメーリングリストでも質問してみたのですが、結局回答を得られず、自己解決です。 URLの書き換えをしなければMIME typeを変更出来ました。 RewriteRule ^(.+\.hoge)$ - [T=image/jpeg] http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html http://httpd.apache.org/docs/2.0/rewrite/rewrite_guide.html http://httpd.apache.org/docs/2.0/rewrite/rewrite_guide_advanced.html これを利用して、 HTML <img src="image.jpg"> <a href="image.jpg?download">ダウンロード</a> .htaccess RewriteEngine on RewriteCond %{QUERY_STRING} ^download RewriteRule ^(.+)$ - [T=application/octet-stream] CGIを使わずに同じファイル(ファイル名)で保存ダイアログを出せるようになりました。 他にも使い道はありますが、ご参考まで。

taloo
質問者

補足

回答ありがとうございます。 アクセスしたときに条件付きで動的にMIME typeを変更したいと思っています。 (この拡張子やMIME typeは一例です) はじめは xxx.hogeでアクセスするとtext/plain xxx.hoge?jpgとしてアクセスするとimage/jpgにしたかったのでこういう例になりましたが、 試行錯誤するうちにアクセス時の拡張子を変えてみようと、 <FilesMatch "\.(hoge)$"> ForceType image/jpeg RewriteEngine On RewriteRule (.+)\.hoge$ $1\.gif [T=image/jpeg](または[T=image/jpeg,PT]) </FilesMatch> というのもやってみましたが、[T]フラグは無視されているようですし、 ForceTypeも実行されませんでした。 <FilesMatch "\.(html)$"> ForceType image/jpeg </FilesMatch> ちなみにこれはimage/jpegで出力されます。 代替策ですが、 リダイレクトではなく、ファイルの中身を出力するというのはどうすればいいのでしょうか? ([T]フラグを使う方法があればそれも、、、)

関連するQ&A

専門家に質問してみよう