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

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

新規登録して質問してみよう
ただいま回答率
85.35%
URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

Webサイト

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

リダイレクト

プログラムの入力元や出力先を通常とは別の場所に転送させることをリダイレクトと呼びます。

.htaccess

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

HTML

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

Q&A

解決済

1回答

2442閲覧

PCサイトからスマホサイトにリダイレクトさせるには(.htaccess)

aimin

総合スコア9

URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

Webサイト

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

リダイレクト

プログラムの入力元や出力先を通常とは別の場所に転送させることをリダイレクトと呼びます。

.htaccess

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

HTML

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

0グッド

0クリップ

投稿2020/02/06 02:48

編集2020/02/06 05:43

######状況

こちらを参考に、.htaccessを使ってPCサイトからスマホサイトへのリダイレクトをさせようとしています。
PC版とスマートフォン版サイトを自動で切り替える方法

http://www.hoge.com/foo/bar (PCページ)
http://www.hoge.com/foo/bar/sp (スマホページ)
として、/fooに.htaccessを格納しています。

.htaccessには、下記のように記述しています。

<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_USER_AGENT} (iPhone|Android.*Mobile|Windows.*Phone) [NC] RewriteCond %{QUERY_STRING} !mode=pc RewriteRule /foo/bar/ /foo/bar/sp/ [R,L] </IfModule>

######質問
/foo/index.htmlにある/foo/bar/index.htmlへのリンクをクリックしたところ、PC・スマホどちらから閲覧してもトップページ(/index.html)へ遷移されてしまいます。

【追記】/.htaccessにエラー処理があったためトップページに飛んでいました。
エラー処理を削除すると403エラーでした。

Forbidden You don't have permission to access /foo/bar/ on this server.

PCの場合は/foo/bar/index.html
スマホの場合は/foo/bar/sp/index.html
に遷移させるようにするにはどのようにしたらいいのでしょうか?

.htaccessと正規表現の書き方がいまいち理解できておらず申し訳ないのですが、ご回答いただけますと幸いです。よろしくお願いいたします。

######状況(随時更新 20/2/6/13:37)

htaccessのリダイレクトで403エラーが起きたときの対処法

Options +FollowSymLinks

/foo/.htaccessの1行目に↑を追加したところ、PC・スマホどちらから閲覧しても/foo/bar/index.htmlに遷移するようになりました。

######状況(随時更新 20/2/6/14:43)

JavaScript:一つのリンクをPC用URLとスマホ用URLに切り分ける

JavaScriptを使った方法で期待通りに遷移できました。
問題としては解決はしましたが、.htaccessで実現する方法は引き続き回答募集させていただきます。
ご存知の方は回答いただけますと嬉しいです。。

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

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

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

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

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

m.ts10806

2020/02/06 02:49

レスポンシブではなく完全に別ページとしてあるということですよね
aimin

2020/02/06 02:54

はい、PCページとスマホページは完全に別のファイルです。
Y.H.

2020/02/06 02:58 編集

> .htaccessには、下記のように記述しています。 /foo/.htaccessの内容はこの6行だけですか? RewriteRule /foo/bar/ .... だとマッチしないからリダイレクトしない筈なんですが・・・
aimin

2020/02/06 04:23 編集

/foo/.htaccessには6行だけです。 確認したところ、/.htaccessに403か500のエラーでトップページに飛ばす記述があり、 ErrorDocument 403 http://www.hoge.com/ ErrorDocument 404 http://www.hoge.com/error.html ErrorDocument 500 http://www.hoge.com/ こちらを削除すると、403エラーが出ました。 Forbidden You don't have permission to access /foo/bar/ on this server. 「マッチしない」とは5行目のパスの指定が間違っているということでしょうか?
guest

回答1

0

ベストアンサー

.htaccessRewriteRuleを使用する場合はpathのマッチングには
.htaccessの存在するpathからの相対pathで指定する必要があります。

htaccess

1#/foo/.htaccess 2RewriteEngine On 3RewriteCond %{HTTP_USER_AGENT} (iPhone|Android.*Mobile|Windows.*Phone) [NC] 4RewriteCond %{QUERY_STRING} !mode=pc 5RewriteRule ^bar/ /foo/bar/sp/ [R,L]

但し、上記だと/foo/bar/配下へのリクエストはすべて/foo/bar/sp/へリダイレクトするためリダイレクトループします。(/foo/bar/sp/へのリクエストに対してもマッチするので)
「/foo/bar/sp/以外」の条件を追加し、/foo/bar/以降のpathをリダイレクト先に追加します。
(※/foo/bar/sp/にはindex.htmlファイルのみ存在する場合は
RewriteRule ^bar/ /foo/bar/sp/ [R,L]で構いません。)

htaccess

1#/foo/.htaccess 2RewriteEngine On 3RewriteCond %{REQUEST_URI} !/foo/bar/sp/ [NC] 4RewriteCond %{HTTP_USER_AGENT} (iPhone|Android.*Mobile|Windows.*Phone) [NC] 5RewriteCond %{QUERY_STRING} !mode=pc 6RewriteRule ^bar/(.*) /foo/bar/sp/$1 [R,L] 7#/foo/bar/sp/配下にはindex.htmlファイルのみ存在する場合は以下でも可です。 8#RewriteRule ^bar/ /foo/bar/sp/ [R,L]

投稿2020/02/06 05:46

編集2020/02/06 05:56
Y.H.

総合スコア7918

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

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

aimin

2020/02/06 07:55

RewriteRuleのパスの指定方法とリダイレクトループを回避しなければならないこと、理解できました。 書いていただいたコードに「Options +FollowSymLinks」を追加して期待通りの動作になりました。 分かりやすく教えてくださり本当にありがとうございました…! 知識を深められ&理想の実装ができ、とても助かりました^^* その他の参考メモ http://www-creators.com/archives/248
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問