mod_rewiteを使用したスマホとPCの振り分けについて(画像が表示されない)


http://www.anothersky.pw/skyward/archives/
000094.html
こちらのサイトを参考にモバイルとPCの振り分けが実現できました。

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/spn/.*$
RewriteCond %{HTTP_USER_AGENT} (iPhone|iPod|Android|BlackBerry|Windows.Phone) [NC]
RewriteCond %{HTTP_USER_AGENT} !iPad [NC]
RewriteCond %{HTTP_COOKIE} !viewmode=pc
RewriteRule ^(.*)$ /spn/$1 [R=301,L]


ここでひとつ問題が出てきました。
スマホでアクセスした場合、モバイルフォルダの中を参照するように転送されるわけですが、その転送されたページの画像が表示されません。
(例)http://www.aaa.com/spn/index.html の中の画像

http://www.aaa.com/spn/(モバイルフォルダ)
http://www.aaa.com/image/(イメージフォルダ)

となっており、どうもimageフォルダに入っている画像にアクセスができなくなるようです。
おそらく、転送処理をした際にパスか何かが変わってしまうのかと思うのですが、解決法をご教授ください。
※spn以下に入っている画像に関しては正しく表示されます。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2014/05/26 18:09:32
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:watercooler No.1

回答回数289ベストアンサー獲得回数51

ポイント140pt

画像ファイルのURLに始点を書いてないんじゃないかしら?
始点が無いと相対パスになってhttp://www.example.com/spn/image/画像ファイルになっちゃうわよ。そんなところに画像は無いんだから何も表示されないのは当然よね。

どちらかの対策が必要になるわ

  • すべてのリンクを/image/画像に書き直して絶対指定にしちゃう。
  • リンクはそのままにしておいてbaseタグでhttp://www.example.com/image/を始点にしちゃう。

HTMLタグ/リンクタグ/相対リンクの基準となるURIを指定する - TAG index Webサイト
<base>?HTML5タグリファレンス

id:watercooler

spn以下に入っている画像に関しては正しく表示されます。

見逃していたわ。ごめんなさい。
baseタグで全部変えちゃうとまずいわね。面倒でも必要なリンクだけ絶対指定に直す方法になるかしら。
いっそのこと/spn以下にある画像ファイルをすべて/imageに移せればいいのだけど、逆に必要な画像ファイルを/imageから/spnにコピーしちゃうって手もなくはないわ。あなたの管理しやすいところに画像をまとめることを考えるのが第一かもしれないわ。

2014/05/25 20:05:59
id:jamis

回答ありがとうございました。
そうですね、画像ファイルを移動させれば表示ができますね。

2014/05/26 18:07:39
id:snow0214 No.2

回答回数470ベストアンサー獲得回数116

ポイント60pt

画像ファイルを相対指定にしているのだと思いますが、下のような指定の仕方にすれば、PCサイトでもモバイルサイトでも共通して表示できます。

<img src="/image/image.jpg" />
id:jamis

回答ありがとうございます。

2014/05/26 18:07:34
id:jamis

質問者から

jamis2014/05/28 11:45:16

他の質問で全く同じものがありました。

この方法で解決しました。

http://q.hatena.ne.jp/1350363142

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません