質問: PCサイトとスマホサイトのURLが異なるため、リダイレクトさせようとして、`.htaccess`に以下のように記述しサーバーのルートドメインのみセットしました。 スマホでPCトップページにアクセスするとうまく切り替わったのですが、PC下層ページが反映されません(スマホページに切り替わらない)。スマホサイトのトップページから下層ページに遷移すると(当然ですが)きちんとスマホサイトがでます。PC下層ページを直入力するとスマホ下層ページに切り替わりません。何が間違っているのか教えていただけませんでしょうか。 `.htaccess`の記述は以下の通りです。 ``` RewriteEngine On RewriteCond %{HTTP_USER_AGENT} (iPhone|Android.*Mobile|Windows.*Phone) [NC] RewriteCond %{QUERY_STRING} !mode=pc RewriteRule ^$ /smt/ [R,L] ``` 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` お手数になりますが、よろしくお願いいたします。
回答: .htaccess の場合、パス「/a/b/c.html」の先頭の「/」が省かれた「a/b/c.html」が `RewriteRule` の対象となります。 現在の設定の `^$` だと、パス「/」のみを対象としていますので、トップページのみとなります。 正規表現、後方参照、あと、リダイレクトループにならないよう「/smt/」を除外するルールを考えてみてください。 (追記) 「/何らかのパス」→「/smt/何らかのパス」にするならば、以下の設定です。 ``` RewriteRule ^(.*)$ /smt/$1 [R,L] ```