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

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

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

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

HTML

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

Q&A

解決済

1回答

2158閲覧

httaccess スマホリダイレクト処理について

kare-mazesoba

総合スコア12

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

HTML

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

0グッド

1クリップ

投稿2017/10/17 03:03

マルチドメインで3つのHPを運営しています。
親ドメイン:切り替え式のサイト
子ドメイン:レスポンシブのサイト
子ドメイン:レスポンシブのサイト

親ドメインのみ切り替え式の設定をいれ、子ドメインでは設定なしにしたいと考えています。
しかし自分の書いた内容だと、子ドメインまでリダイレクト処理してしまう設定が入ってしまいうまく書くことができません。
現状スマホでURLの確認をすると下記のようになります。
http://sample/  =>http://sample/s/
http://sample2.jp=>http://sample2.jp/s/sample2.jp/
http://sample3.jp=>http://sample3.jp/s/sample3.jp/

これをスマホで見たとき
http://sample/  =>http://sample/s/
http://sample2.jp=>http://sample2.jp/
http://sample3.jp=>http://sample3.jp/

どのように書けばいいか皆様のご意見よろしくお願いします。

下記がhtaccessの内容です

# This file is made by RewriteRule Tool. # Enable RewriteEngine. RewriteEngine On # Main RewriteRule for multidomain. RewriteCond %{HTTP_HOST} ^(sample2.jp|sample3.jp) RewriteCond %{REQUEST_URI} !^/(sample2.jp|sample3.jp)/ RewriteRule ^(.*)$ /%{HTTP_HOST}/$1/ [L] RewriteCond %{REQUEST_URI} !/(sample.com)/ RewriteCond %{HTTP_USER_AGENT} (iPod|iPhone|iPad|Android|Windows\ Phone) RewriteRule ^(.*)$ s/$1 [R] RewriteBase / RewriteCond %{REQUEST_URI} /(sample.com)/ RewriteCond %{HTTP_USER_AGENT} !(iPod|iPhone|iPad|Android|Windows\ Phone) RewriteRule ^s/(.*)$ $1 [R] RewriteBase / #-------------------------------------------------------------- # sample.com #-------------------------------------------------------------- #URLの正規化(www) RewriteEngine on RewriteCond %{HTTP_HOST} ^www.sample.com RewriteRule (.*) http://sample.com/$1 [R=301,L] #URLの正規化(html,php) Options FollowSymLinks RewriteEngine on RewriteCond %{THE_REQUEST} ^.*/index.php RewriteRule ^(.*)index.php$ http://sample.com/$1 [R=301,L] #存在しないページのアクセスをTOPページにリダイレクト[1] ErrorDocument 404 http://sample.com/ #-------------------------------------------------------------- # sample2.jp #-------------------------------------------------------------- #URLの正規化(www) RewriteEngine on RewriteCond %{HTTP_HOST} ^www.sample2.jp RewriteRule (.*) http://sample2.jp/$1 [R=301,L] #URLの正規化(html,php) Options FollowSymLinks RewriteEngine on RewriteCond %{THE_REQUEST} ^.*/index.php RewriteRule ^(.*)index.php$ http://sample2.jp/$1 [R=301,L] #-------------------------------------------------------------- # sample3.jp #-------------------------------------------------------------- #URLの正規化(www) RewriteEngine on RewriteCond %{HTTP_HOST} ^www.sample3.jp RewriteRule (.*) http://sample3.jp/$1 [R=301,L] #URLの正規化(html,php) Options FollowSymLinks RewriteEngine on RewriteCond %{THE_REQUEST} ^.*/index.php RewriteRule ^(.*)index.php$ http://sample3.jp/$1 [R=301,L]

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

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

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

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

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

guest

回答1

0

ベストアンサー

RewriteCond はその直後の RewriteRule のみに効きます。
下記のルールは %{HTTP_HOST} の条件がないので、sample2.jp, sample3.jp の場合も有効になるのではないでしょうか。
その後の「#URLの正規化(html,php)」箇所も %{HTTP_HOST} の条件が必要と思います。

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

できれば、%{HTTP_HOST} ではなく、VirtualHost で DocumentRoot を分けて、それぞれの .htaccess ファイルを使うようにした方がいいと思います。

(備考)
.htaccess の [L|last] フラグは、書き換え後の URL に対して、もう一度、先頭のルールから評価します。
Apache httpd 2.4 ならば、[END] が利用できます。

投稿2017/10/19 15:17

TaichiYanagiya

総合スコア12146

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

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

kare-mazesoba

2017/11/10 00:53

助かりました!ほんとにありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問