みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

htaccessによる端末ごとによる振り分け

htaccessによる振り分けに関しまして、
PC:/
スマートフォン:/sp/
モバイル:/m/
端末ごとに振り分けを行いたいです。
■PC では、/sp/フォルダ、/m/フォルダにアクセスしても、
URLから、各フォルダが除かれ、PCファイルが読み込まれます。
■スマートフォンでは、/sp/フォルダが入っていないときは、
問題なく、URLに/sp/が加わり、スマートフォンサイトが読み込まれます。
ですが、http://○○.com/m/index.php等でアクセスを行うと、
http://○○.com/sp/m/index.phpのようなURLになります。
※これは、http://○○.com/sp/index.phpへアクセスしてほしいです。
■モバイルでは、/m/フォルダが入っていないときは、
問題なく、URLに/m/が加わり、モバイルサイトが読み込まれます。
ですが、http://○○.com/sp/index.php等でアクセスを行うと、
http://○○.com/m/sp/index.phpのようなURLになります。
※これは、http://○○.com/m/index.phpへアクセスしてほしいです。
■モバイル・スマートフォンのリダイレクトに関しまして、
改善するためのご意見をお願い致します。
よろしくお願い致します。

■htaccessの中身です。
RewriteEngine on

#スマートフォン
RewriteCond %{REQUEST_URI} !/sp/
RewriteCond %{HTTP_USER_AGENT} (iPod|iPhone|iPad|Android|Windows\ Phone)
RewriteRule ^(.*)$ sp/$1 [R]
#RewriteRule ^(.*)$ sp/ [R]
RewriteBase /

#モバイル
RewriteCond %{REQUEST_URI} !/m/
RewriteCond %{HTTP_USER_AGENT} (DoCoMo|KDDI|DDIPOKET|UP\.Browser|J-PHONE|Vodafone|SoftBank)
RewriteRule ^(.*)$ m/$1 [R]
#RewriteRule ^(.*)$ m/ [R]
RewriteBase /

#PC
RewriteCond %{REQUEST_URI} /sp/
RewriteCond %{HTTP_USER_AGENT} !(iPod|iPhone|iPad|Android|Windows\ Phone)
RewriteRule ^sp/(.*)$ $1 [R]
#RewriteRule ^sp/(.*)$ / [R]
RewriteBase /

#PC
RewriteCond %{REQUEST_URI} /m/
RewriteCond %{HTTP_USER_AGENT} !(DoCoMo|KDDI|DDIPOKET|UP\.Browser|J-PHONE|Vodafone|SoftBank)
RewriteRule ^m/(.*)$ $1 [R]
#RewriteRule ^m/(.*)$ / [R]
RewriteBase /

投稿日時 - 2014-04-23 15:43:43

QNo.8565869

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

.htaccess による振り分けは、特別な目的がない限り使用するのは感心しません。
特別な例とは
 ソフトバンクのi-phone用のサイトで、他のユーザーエージェントをはじくなどの場合です。

 そもそも、
【引用】____________ここから
 HTML文書が、ブラウザやプラットフォームの違いを超えてうまく働くべきであるということは、多くが認めるところである。 相互運用性の達成は、コンテンツプロバイダのコストを低下させる。
 なぜならただ1種類の文書しか作る必要がなくなるからだ。
  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 もし【相互運用性確保の】努力が成されなければ、Webは互換性のないフォーマット毎に分け隔てられた世界に分割され、すべての関係者にとっての商業的可能性が減少することとなるであろう、大きなリスクを負うこととなる。
・・・【中略】・・・
HTMLは、どんな環境からもWebの情報を利用できるようにすべきだという方針の下に開発されている。例えば、様々な解像度や色深度のグラフィックディスプレイを持つPCや、携帯電話、モバイル機器、音声入出力機器、帯域が広いコンピュータや狭いコンピュータ、等の環境である。
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ここまで[Introduction to HTML 4 (ja)( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/intro/intro.html#h-2.2.1 )]より

 これが大原則・・・そのために、HTMLを使ってウェブページを作るのです。

 その方法では検索エンジンやプリンター、最近のuseragentを送信しないユーザーへの対処が出来ない。
 検索エンジンがくろーるした際に、同じコンテンツのページが複数あるとスパムとみなされる危険がある。

 もっとも良いのは・・、
・内容的に共通なコンテンツでデザインのみ変わる場合は、スタイルシートを切り替えます。
 640px~1000px幅程度のリキッドでデザインする。
 それでもカバーできない場合は、スマホはmedia-queryが使えますからmediaqueryでスタイルシートを変更する。

・異なるコンテンツのみ、専用のページを作成する。

 これが大原則です。

補足)
 /sp/、/m/のように、PATH_INFO でページを分岐されているなら、htaccessにて
AddType application/x-httpd-cgi index.html
 ★下位ホルダーは、AddType text/html index.html としておくこと(必須)
として、index.html(実体はCGI)にて、PATH_INFOで書き出すのが効率的です。

投稿日時 - 2014-04-23 18:42:09

あなたにオススメの質問