質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
.htaccess

Apacheウェブサーバーにおいて、ディレクトリ単位で設置及び設定を行う設定ファイルを指します。

Q&A

解決済

2回答

3234閲覧

.htaccessの振り分けがうまくいかない

cream-pan

総合スコア13

.htaccess

Apacheウェブサーバーにおいて、ディレクトリ単位で設置及び設定を行う設定ファイルを指します。

0グッド

0クリップ

投稿2017/09/14 06:04

編集2017/09/14 06:19

.htaccessでスマホのみを/sp/に振り分けたいのですがタブレットも/sp/に振り分けられてしまい、うまくいきません。
(pcとタブレットはpc表示にしたい)
ご教示お願い致します。
わかりにくければ修正致します。

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

CHERRY

2017/09/14 06:28

どのようにうまく行かないのでしょうか? うまく行かない場合の「ユーザーエージェント文字列」とサーバのログ(access_log, Rewrite_log)を質問に追記いただけないでしょうか? ログを記載する場合、URL や IPアドレス等は、適当に置き換えてください。(ドメインは、example.com 等の例示用ドメインを使ってください)
cream-pan

2017/09/14 06:44

うまくいかないのは上記のようにタブレットも/sp/に振り分けられてしまう点です。自己解決出来そうです。お手数おかけしました。
guest

回答2

0

ユーザーエージェントの取得方法があいまいですので、AndroidスマホとAndroidタブレットと混ざってしまっています。

  • Androidスマホ :Android.*Mobi
  • Androidタブレット:Android.*Tablet

ユーザーエージェントを下記のようにua_devにセットしておきます。そして[R]でリダイレクトしたら処理を終了できるように[R,L]とします。URLが変更になった時などのリダイレクトは[R=301]とします。なにも書かなないと一時的なリダイレクト(302リダイレクト)となります。

また、RewriteCondは上から順にANDで結合します。今回はOR条件はありませんが、OR条件にしたい場合は行末に[OR]と書きます。

条件は下記のように設定しています。

apache

1SetEnvIfNoCase User-Agent "iPhone" ua_dev=smart 2SetEnvIfNoCase User-Agent "iPod" ua_dev=smart 3SetEnvIfNoCase User-Agent "Android.*Mobi" ua_dev=smart 4SetEnvIfNoCase User-Agent "Windows Phone" ua_dev=smart 5SetEnvIfNoCase User-Agent "Mobi.*Firefox" ua_dev=smart 6SetEnvIfNoCase User-Agent "(Nexus 4|Nexus 5|Nexus 6)" ua_dev=smart 7SetEnvIfNoCase User-Agent "BlackBerry" ua_dev=smart 8 9RewriteEngine on 10 11RewriteCond %{ENV:ua_dev} ^smart 12RewriteCond %{REQUEST_URI} !^/sp/ 13RewriteRule ^(.*)$ /sp/$1 [R,L] 14 15RewriteCond %{ENV:ua_dev} !^smart 16RewriteCond %{REQUEST_URI} ^/sp/ 17RewriteRule ^sp/(.*)$ /$1 [R,L]

投稿2017/09/14 06:54

Tomak

総合スコア1652

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Tomak

2017/09/14 06:55

すみません、既に解決済みでした。
guest

0

自己解決

細い理由は不明ですが、下記のように書き換えたところ、タブレットはpc表示、スマホはスマホ表示に振り分けられました。

RewriteEngine On RewriteBase / RewriteCond %{REQUEST_URI} !(^/sp/.*$) RewriteCond %{HTTP_USER_AGENT} (iPhone|iPod|Android.*Mobile|BlackBerry|Windows.Phone) [NC] RewriteCond %{HTTP_USER_AGENT} !iPad [NC] RewriteCond %{QUERY_STRING} !mode=pc RewriteRule ^(.*)$ /sp/$1 [R=302,L]

投稿2017/09/14 06:46

cream-pan

総合スコア13

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問