PHPでJavascriptをちょこっと修正したり、
サーバー変数取りに行くのに js でいちいちAjaxするとか
ちょっとJSをGET引数毎に処理変えたいだけとか。
ちょっとだけ使えたら便利な場面ってあると思うんです。
でも、拡張子php で cssを読み込むのは使いにくいので・・・
それなら 拡張子 js を php で処理しちゃえば?
js / css を php に関連付ける
悪魔の囁きに乗って、やってみることにした。
.htaccessでハンドラをPHPにする
拡張子 .js と 拡張子 .css の処理をPHPに任せる。
styles/.htaccess
AddHandler php-script .php AddHandler php-script .css
scripts/.htaccess
AddHandler php-script .php AddHandler php-script .js
として、.htaccessで関連付けを変更した。
.user.ini で content-type を指定する
そのままでは javascriptと stylesheet が content-type : text/htmlで配信されて格好が悪いので、それぞれのフォルダでPHPのcontent-typeを変えておいた。
styles/.user.ini
default_mimetype = "text/css"
scripts/.user.ini
default_mimetype = "text/javascript"
実行結果
takuya@rena:~/Sites/todo/scripts$ curl -I http://localhost/~takuya/todo/scripts/tasks.js HTTP/1.1 200 OK Date: Wed, 02 Jul 2014 09:17:22 GMT Server: Apache/2.2.26 (Unix) DAV/2 PHP/5.4.24 mod_ssl/2.2.26 OpenSSL/0.9.8y X-Powered-By: PHP/5.5.11 Content-Type: text/javascript
X-Powered-By: PHP/5.5.11 ちゃんと処理されてますね。安心
何の役にも立たない?
意外と役に立つんですよ。サーバーの全然別のところにあるJSをついでに読み込んだり、文字列をちょっとフォーマットしたり、サーバーのパスを変換したり
<?php include "default.css.php"; $width = 600; $color = "#3d3d3d"; ?> #main{ background-color = <?= $color;?> width: <?= $width;?> }
それなりに使えそうな気はする。
あとは活用アイディア次第かな。
追記
どうせ、リバースプロキシでキャッシュするんだから、CGIでキャッシュ設定かいて、nodeやSASSに処理任せるCGI書いてハンドラ作っちゃえば良かったよね。
nodeは、ともかく、 コメントアウトに// を使いたい程度で Sassを覚えるのも面倒だしね・・・
php でかいて ob_handler でサクッと処理しちゃえばよかったんだよ。