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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

.htaccess

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

Q&A

解決済

1回答

2360閲覧

.htaccessでPCとスマホ(携帯)のフォルダ構成でサブフォルダアクセス時に対象デバイスに振り分けができずに困っています

y.nishi

総合スコア7

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

.htaccess

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

0グッド

0クリップ

投稿2017/03/16 01:44

編集2017/03/17 05:54

お世話になっております。

###前提・実現したいこと
.htaccessでPCとスマホ(携帯)のページの振り分けを行っています。
フォルダ構成は下記の通りです。

/aaa/pc/p1/index.html
/aaa/pc/p2/index.html
/aaa/pc/p3/index.html
:
/aaa/sp/s1/index.html
/aaa/sp/s2/index.html
/aaa/sp/s3/index.html
:

/aaa/、/aaa/pc/、/aaa/sp/の配下に.htaccessを配置しています。

下記、問題を解消したいのですが、.htaccessの記述で実現可能でしょうか。

スマホで/aaa/pc/*にアクセスした際は/aaa/sp/に遷移させたい。
PCで/aaa/sp/*にアクセスした際は/aaa/pc/に遷移させたい。

###発生している問題・エラーメッセージ
/aaa/にアクセスした際はPCとスマホの振り分けは問題ないのですが、
スマホで/aaa/pc/にアクセスすると/aaa/pc/の内容が表示されてしまう。
(その逆、PCで/aaa/sp/にアクセスしても同様です)

###該当のソースコード
【/aaa/配下】
RewriteEngine on

RewriteCond %{REQUEST_URI} !^/sp/.$
RewriteCond %{HTTP_USER_AGENT} (iPod|iPhone|iPad|Android|Windows\ Phone|DoCoMo|KDDI|DDIPOKET|UP.Browser|J-PHONE|Vodafone|SoftBank) [NC]
RewriteCond %{REQUEST_URI} !/?js/?
RewriteCond %{REQUEST_URI} !/?css/?
RewriteCond %{REQUEST_URI} !/?img/?
RewriteRule ^(.
)$ /aaa/sp/$1 [R=302,L]
RewriteBase /

RewriteCond %{REQUEST_URI} !/?js/?
RewriteCond %{REQUEST_URI} !/?css/?
RewriteCond %{REQUEST_URI} !/?img/?
RewriteRule ^(.*)$ /aaa/pc/$1 [R=302,L]
RewriteBase /

【/aaa/pc/配下】
RewriteEngine off

【/aaa/sp/配下】
RewriteEngine off

お手数ですが、何卒よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

ディレクティブの適用のされ方

ここに書かれていますが、上の階層の.htaccessは下の階層の.htaccessによって上書きされます。
つまり、/aaa/pc//aaa/sp/に書かれている、RwriteEngine offが有効になり、書き換えは行われません。

投稿2017/03/17 06:18

shi_ue

総合スコア4437

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

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

y.nishi

2017/03/21 04:37

shi_ue様 返信が遅くなり申し訳ございません、ご回答ありがとうございました。 初歩的な部分を理解しておりませんでした。 /aaa/pc/、/aaa/sp/の.htaccessの「RwriteEngine off」を削除し、左記の.htaccessに ・PCで/sp/にアクセスしたら/pc/へ遷移 ・スマホで/pc/にアクセスしたら/sp/へ遷移 を追記したことにより、想定した動きを実現することができました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問