スポンサーリンク
今回作ったドロップシッピングのネットショップ2店舗は
どちらも、「もしもドロップシッピング」の
「ショップできすぎくん」を使って作っている。
HTMLの知識がゼロでも、「肉汁! – 肉とビールの通信販売」や「電化通販 キッチンとリビング」
くらいのWebショップは誰でも作れる。
「ショップできすぎくん」は「忍者ホームページ」にデータを自動で書き出す。
各携帯キャリアごとのページも「ショップできすぎくん」がサブディレクトリに自動生成してくれ、
「忍者ホームページ」で、携帯からのアクセスをサブディレクトリに振り分けてくれる。
とても便利。そして「忍者ホームページ」では、独自ドメインも使えるので使ってみた。
だが、ここで問題が。
「忍者ホームページ」では自分のDNSでCNAMEの設定をしておけば独自ドメインが使えるのだが、そうすると、「ショップできすぎくん」のシステムから、販売サイトが見えなくなってしまうのだ。
そうなると、いろいろ問題がありそうなので、書き出したファイルを別サーバーにコピーして、
そちらで独自ドメインを使用。「忍者ホームページ」はミラーサイトという形で残しておく。
ちなみに、下の2つが「忍者ホームページ」用のURL。なかなかオシャレだ。
オシャレすぎて、販売サイトで使うのは気が引ける。
- 「肉汁! – 肉とビールの通信販売」
- http://mise.chikouyore.com/ (店。近う寄れ.com)
- 「電化通販 キッチンとリビング」
- http://sessya.koiwazurai.com/ (拙者、恋煩い.com)
ということで、ファイルを別サーバーに移すと、今度は独自ドメインが安全に使えるが、
携帯からのアクセスを自動で振り分けてくれなくなる。そこで、それ用の.htaccessを書いてみた。
docomoからのアクセスは、 サブディレクトリのiへ、softbankからのアクセスはサブディレクトリのvへ、auからは、サブディレクトリのeへ転送する。
order allow,deny allow from all AddType text/html .html Options -Indexes RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} .+\.docomo\.ne\.jp$ RewriteRule ^(.+\.html)$ /i/$1 [L] RewriteCond %{HTTP_HOST} .+\.jp\-[cdhknqrst]\.ne\.jp$ RewriteRule ^(.+\.html)$ /v/$1 [L] RewriteCond %{HTTP_HOST} .+ezweb\.ne\.jp$ RewriteRule ^(.+\.html)$ /e/$1 [L]
セキュリティに関する内容なので、すべてを書き写してはいないが、RewriteEngine On以降が
URL振り分けの設定になる。
赤い枠の部分に書いてあるとおり、上の.htaccessは間違えています。申し訳ありません。
上で意図していたことを処理するには、%{HTTP_HOST}ではなく%{REMOTE_HOST}でした。
つまり、下の.htaccessが正しいのですが、それでも%{REMOTE_HOST}で携帯振り分けは
できないみたいです。
order allow,deny allow from all AddType text/html .html Options -Indexes RewriteEngine On RewriteBase / RewriteCond %{REMOTE_HOST} .+\.docomo\.ne\.jp$ RewriteRule ^(.+\.html)$ /i/$1 [L] RewriteCond %{REMOTE_HOST} .+\.jp\-[cdhknqrst]\.ne\.jp$ RewriteRule ^(.+\.html)$ /v/$1 [L] RewriteCond %{REMOTE_HOST} .+ezweb\.ne\.jp$ RewriteRule ^(.+\.html)$ /e/$1 [L]
解決策としては、素直にUSER_AGENTで判定するのが手っ取り早いようです。
ただし、User Agentは偽装できるので、絶対に携帯からしかアクセスさせないとしたら、
これでもダメです。
#docomo RewriteCond %{HTTP_USER_AGENT} DoCoMo [NC] RewriteRule ^(.+\.html)$ /i/$1 [R] #softbank RewriteCond %{HTTP_USER_AGENT} (J-PHONE|Vodafone|SoftBank) [NC] RewriteRule ^(.+\.html)$ /v/$1 [R] #au RewriteCond %{HTTP_USER_AGENT} UP\.Browser [NC] RewriteRule ^(.+\.html)$ /e/$1 [R] #smart phone #RewriteCond %{HTTP_USER_AGENT} (iPhone|iPod|Android|BlackBerry) [NC]
そういったわけで、IPを逆引きしたかったのですが、ダメでした。
厳密に判定するには、.htaccessに携帯各社が公表しているIPを列挙するか、.htaccessでなく
スクリプトで判別する必要があります。
関連コンテンツ
スポンサーリンク