ハマったのでメモ
先日、クライアントの本番サーバ上にtestディレクトリを作ってその中にテストページをアップロードするよう依頼された。
(http://foo.com/test/○○~みたいな感じ)
しかし、ソースを確認してみると、全てがルートパスで書かれたソースだった。
このままtestディレクトリ以下にアップロードしたところで当然読み込まれない。。。
手動でなおすこともかんがえたのだけれど、自分が書いたものではなかったので
どこまで直していいのかわからないし、何より面倒だった。
そこで、何か方法がないか調べてみると、どうやら.htaccessでなんとかできるっぽいのでやってみた。
他にもっとスマートなやり方があればぜひ教えてください。
##画像を読み込ませる
http://foo.com/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を設置
RewriteEngine On
RewriteCond %{HTTP_REFERER} ^http://foo.com/test/(.*)$
RewriteRule ^(.*)$ /test/css/$1 [R,L]
##存在しないディレクトリ
同じように、本番サーバ上に存在しないディレクトリの場合でも、
ディレクトリを作ってその中に.htaccessを格納すれば大丈夫だった。
RewriteEngine On
RewriteCond %{HTTP_REFERER} ^http://foo.com/test/(.*)$
RewriteRule ^(.*)$ /test/bar/$1 [R,L]
ほぼ下記のサイト様を参考にさせていただきました。ありがとうございました。
参考サイト
hibro - RewriteRuleを使ってみる