

PCサイトとスマホサイトのURLが異なるため、リダイレクトさせようとして、`.htaccess`に以下のように記述しサーバーのルートドメインのみセットしました。

スマホでPCトップページにアクセスするとうまく切り替わったのですが、PC下層ページが反映されません（スマホページに切り替わらない）。スマホサイトのトップページから下層ページに遷移すると（当然ですが）きちんとスマホサイトがでます。PC下層ページを直入力するとスマホ下層ページに切り替わりません。何が間違っているのか教えていただけませんでしょうか。

`.htaccess`の記述は以下の通りです。

[code]

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

URLは以下の通りです。

＜TOP＞  
PCサイト `http://www.〇〇〇.com/` もしくは `http://www.〇〇〇.com/index.html`  
スマホサイト `http://www.〇〇〇.com/smt`

＜下層＞  
PCサイト `http://www.〇〇〇.com/△△△.html`  
スマホサイト `http://www.〇〇〇.com/smt/△△△.html`

お手数になりますが、よろしくお願いいたします。


CC BY-SA 4.0
2019-02-01T03:23:21.683
52466
2019-02-06T15:19:31.383
2019-02-01T07:16:42.993
7676
32003
question
.htaccess
PCとスマホをリダイレクトする.htaccesの設定について


.htaccess の場合、パス「/a/b/c.html」の先頭の「/」が省かれた「a/b/c.html」が `RewriteRule` の対象となります。  
現在の設定の `^$` だと、パス「/」のみを対象としていますので、トップページのみとなります。  
正規表現、後方参照、あと、リダイレクトループにならないよう「/smt/」を除外するルールを考えてみてください。

(追記)  
「/何らかのパス」→「/smt/何らかのパス」にするならば、以下の設定です。

[code]

    RewriteRule ^(.*)$ /smt/$1 [R,L]
    
[/code]


CC BY-SA 4.0
2019-02-02T15:38:43.927
52504
2019-02-06T15:19:31.383
2019-02-06T15:19:31.383
4603
4603
52466
answer