.htaccessで本番サーバのtestディレクトリ以下でもルートパスを通す


ハマったのでメモ
先日、クライアントの本番サーバ上にtestディレクトリを作ってその中にテストページをアップロードするよう依頼された。
http://foo.com/test/○○~みたいな感じ)
しかし、ソースを確認してみると、全てがルートパスで書かれたソースだった。
このままtestディレクトリ以下にアップロードしたところで当然読み込まれない。。。
手動でなおすこともかんがえたのだけれど、自分が書いたものではなかったので
どこまで直していいのかわからないし、何より面倒だった。

そこで、何か方法がないか調べてみると、どうやら.htaccessでなんとかできるっぽいのでやってみた。
他にもっとスマートなやり方があればぜひ教えてください。

画像を読み込ませる

img/.htaccess

RewriteEngine On
RewriteCond %{HTTP_REFERER} ^http://foo.com/test/(.*)$
RewriteRule ^(.*)$ /test/img/$1 [R]

CSSを読み込ませる

CSSの場合は、CSSファイルからまたCSSファイルを読み込む場合もあるので、Redirectさせるようにする。
画像のときと同じように、http://foo.com/cssディレクトリに、以下を記述した.htaccessを設置

css/.htaccess
RewriteEngine On
RewriteCond %{HTTP_REFERER} ^http://foo.com/test/(.*)$
RewriteRule ^(.*)$ /test/css/$1 [R,L]

存在しないディレクトリ

同じように、本番サーバ上に存在しないディレクトリの場合でも、
ディレクトリを作ってその中に.htaccessを格納すれば大丈夫だった。

bar/.htaccess
RewriteEngine On
RewriteCond %{HTTP_REFERER} ^http://foo.com/test/(.*)$
RewriteRule ^(.*)$ /test/bar/$1 [R,L]

ほぼ下記のサイト様を参考にさせていただきました。ありがとうございました。
参考サイト
hibro - RewriteRuleを使ってみる