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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

Webサイト

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

3796閲覧

.htaccessを使ったデバイスごとのURLの振り分け

obaoba48

総合スコア13

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

Webサイト

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2019/02/28 07:16

編集2019/02/28 07:49

.htaccessを使ったデバイスごとのURLの振り分け

お世話になります。
自分でやってみてもうまくいかないので、ご回答いただければ幸いです。

htaccessの書き方を教えて下さい。

前提・実現したいこと

・サーバーはxserverです
・HTMLサイト

(1) SPディレクトリが、PCディレクトリのサブディレクトリになっている。
(例)
PCサイト : http://example.com/
SPサイト : http://example.com/sp/

(2) 同一ページは同一のファイル名になっている。
(例)
PCサイト : http://example.com/page01.html
SPサイト : http://example.com/sp/page01.html

やりたいことは

https://www.seohacks.net/basic/qa/sites_tuning_sp/

上記ページの「3.UAに応じた302リダイレクトの設定」

そして

・PCからスマホサイトにアクセスした時は、PC版のサイトが表示され、「/sp/」なしのURLがブラウザバーに表示される
・スマホからPCサイトにアクセスした時は、スマホ版のサイトが表示され、「/sp/」なしのURLがブラウザバーに表示される

ようにしたいです。

試したこと

こちらのページの

https://qiita.com/yokoh9/items/2e23198294ba314b4b4b

「デバイスごとに振分けを行い、指定ディレクトリにリダイレクトさせる」を参考に302リダイレクトをかけてみました。

PCから「/sp/」ありのURLにアクセスした場合は意図通りになったのですが

スマホから「http://example.com/」にアクセスすると、ブラウザバー上の表示が「http://example.com/sp/」になってしまいます。

/sp/ありのURLが表示されるとGoogle Analytics上でも/sp/が出てしまい、アクセス解析がしにくくなるので、
スマホで見た時に「スマホ版は表示されるがURLは/sp/無しのurl」にしたいのですが、どう記述すれば良いでしょうか。

.htaccessの現状の記載

以下が現状の記載内容です。一応、どこまで書いたら良いのか分からなかったので、今回の質問とは関係のない部分も全て一緒に記載しています。


#suPHP_ConfigPath/home/example/example.com/xserver_php/ RewriteEngine on RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] RewriteCond %{HTTP_HOST} ^example.com RewriteRule (.*) https://www.example.com/$1 [R=301,L] RewriteCond %{THE_REQUEST} ^.*/index.html RewriteRule (.*)index.html$ https://www.example.com/$1 [R=301,L] RewriteCond %{REQUEST_URI} !/sp/ RewriteCond %{HTTP_USER_AGENT} (iPod|iPhone|iPad|Android|Windows\ Phone) RewriteRule ^(.*)$ sp/$1 [R=302,L] RewriteBase / RewriteCond %{REQUEST_URI} /sp/ RewriteCond %{HTTP_USER_AGENT} !(iPod|iPhone|iPad|Android|Windows\ Phone) RewriteRule ^sp/(.*)$ $1 [R=302,L] RewriteBase / Header set Vary User-Agent

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

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

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

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

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

y_waiwai

2019/02/28 07:18

あなたが書いたという.htaccessを提示してください
obaoba48

2019/02/28 07:49

失礼しました。追記致しましたので、お手数ですがご確認頂けますでしょうか。
guest

回答1

0

ベストアンサー

「/sp/」なしとするのであれば、リダイレクト([R=302])は不要です。

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

逆に、スマホから「/sp/」ありのときに、なしにする設定が必要なのでは?

(2019/03/05 23:38) 追記

PC で「/sp/」→「/」にリダイレクトできているのですから、スマホでも同じようにできるはずです。
もっというと、PC でもスマホでも「/sp/」→「/」にリダイレクトするので、RewriteCond の条件は不要になります。
ただし、スマホの場合、前述の「/」→「/sp/」(内部リダイレクト)とリダイレクトループになるので、「/」→「/sp/」は [END] で終了します。
[END] は httpd-2.4 以降で使用できます。

RewriteCond %{REQUEST_URI} !^/sp/ RewriteCond %{HTTP_USER_AGENT} (iPod|iPhone|iPad|Android|Windows\ Phone) RewriteRule ^(.*)$ sp/$1 [END] RewriteRule ^sp/(.*)$ $1 [R=302,L]

投稿2019/03/01 15:38

編集2019/03/05 14:39
TaichiYanagiya

総合スコア12146

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

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

obaoba48

2019/03/05 08:28

お世話になります。 ご回答ありがとうございます。 返信が遅くなり大変申し訳ございません。 >「/sp/」なしとするのであれば、リダイレクト([R=302])は不要です。 そうなのですか。ただ、リダイレクトかけないと/sp/ありのURLを手打ちすると、/sp/ありのURLで見られてしまうのかなと思ったのですが(僕としては見せたくない)、そういうわけでもないのでしょうか? >逆に、スマホから「/sp/」ありのときに、なしにする設定が必要なのでは? はい、その設定は入れたいなと思っているのですが、何を入れたら良いのでしょうか?
obaoba48

2019/03/05 16:01

お世話になります。 度々ご対応頂きましてありがとうございます! 先ほどご教示頂きました記述をしてみたところ うまく行ったような気がします。 もし上手く作動しない部分があれば再度ご質問させていただくかもしれませんが その時はよろしくお願い致します。 本当にありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問