特定のIPの場合のみ違うContent-Typeで実行する方法
結論は、うまくいかなかったので、IP制限とあわせ技ですが。
もし、もっといい方法があったら教えてください。
要件
- 特定のIPのみContent-Typeを変更する
- 対象ファイルは、index.html
- 出来れば同一ファイルで。無理なら別ファイルでも可
- 下位階層も考慮する
- phpなどのプログラムは使用できない
まず、Content-Typeを設定する方法。
AddType application/xhtml+xml .html
次に、特定ファイルのみ設定する方法。
<Files index.html> AddType application/xhtml+xml .html </Files>
これを、.htaccessでやっていたが、下位階層のindex.htmlにまで影響が出てしまう。
そこで、httpd.confで、
Content-Typeを、mod_headerでやってみようとしたりとか、いろいろ試したがいまいちうまく動かないので、そもそもファイルを分けてしまうことにした。
mod_rewriteが使えるという前提と、index_i.htmlが下位階層に存在しないという前提で。
SetEnvIf Remote_Addr ^xxx\.xxx\.xxx\.xxx$ is_target=yes #SetEnvIf Remote_Addr ^yyy\.yyy\.yyy\.yyy$ is_target=yes RewriteEngine On RewriteBase / RewriteCond %{ENV:is_target} yes RewriteRule ^index_i.html$ - [L] RewriteCond %{ENV:is_target} yes RewriteRule ^$ index_i.html [L,R=302] RewriteCond %{ENV:is_target} yes RewriteRule ^index.html index_i.html [L,R=302] RewriteCond %{REMOTE_ADDR} ^.*$ RewriteRule ^index_i.html$ index.html [L,R=302] <Files index_i.html> AddType application/xhtml+xml .html </Files>
SetEnvIf形式にしたのは、IP制限が複数の場合に何度も書かなくていいようにです。
使いどころとしては、DoCoMoのxhtmlの場合とかなんですけどね。
もっとスマートな方法ないのかなぁ〜?