RewriteRule force MIME typeの仕様と使用

締切り済みの質問

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を経由する方法を採ることにします。

投稿日時 - 2007-02-19 03:49:53

QNo.2765001

暇なときに回答ください

2人が「このQ&Aが役に立った」と投票しています

[  前へ  |  次へ ]

回答(1件中 1~1件目)

ANo.1

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

投稿日時 - 2007-02-19 08:58:17

補足

回答ありがとうございます。
アクセスしたときに条件付きで動的に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]フラグを使う方法があればそれも、、、)

投稿日時 - 2007-02-19 10:42:06

お礼

他の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を使わずに同じファイル(ファイル名)で保存ダイアログを出せるようになりました。
他にも使い道はありますが、ご参考まで。

投稿日時 - 2007-02-21 03:14:49

あわせてチェックしたい
  • Apach2.2サーバーでの.htaccess書式 ...
  • MIMEタイプの設定を上書き ...
  • MIMEヘッダ ...
PR

OKWaveのオススメ

教えて弁護士さん!

お金の悩みQ&A特集はこちら