質問: ### 前提・実現したいこと .htaccessで301リダイレクトをしたい ### 発生している問題 .htaccessでサブディレクトリ型URLからサブドメイン型URLへの301リダイレクトを試みています。 転送元URLはhttp://www.example.com/hoge/(PCサイト用ページ) この/hoge/の中に/s/というフォルダを作り、スマホ用のページにして、ユーザーエージェントで切り替えていました。 転送先URLはhttp://hoge.example.com/でレスポンシブサイトにしてあり、メディアクエリで切り替えをしています。 http://www.example.com/hoge/(PCサイト)または http://www.example.com/hoge/s/(スマホサイト) どちらからアクセスがあってもhttp://hoge.example.com/に転送するようにしたいです。 現状PCサイトは正常にhttp://hoge.example.com/に転送できているのですが、 スマホサイトはhttp://hoge.example.com/s/と最後に/s/がついてしまいうまくいっていません。 .htaccessは下記のように記述してあります。 ``` RewriteEngine On RewriteBase / # リクエストしたURLに下記がが含まれず RewriteCond %{REQUEST_URI} !/s/|/aaa/|bbb.html|ccc.html|ddd.html|eee.html # 下記端末からアクセスがあった時 RewriteCond %{HTTP_USER_AGENT} (iPhone|Android.*Mobile|Windows.*Phone) [NC] # URL末尾に「?mode=pc」がついていない場合 RewriteCond %{QUERY_STRING} !mode=pc # 「/s/」以下へリダイレクト RewriteRule ^(.*)$ /s/$1 [R,L] RewriteRule ^hoge/(.*)$ http://hoge.example.com/$1 [R=301,L] ErrorDocument 404 /404.html ``` 1行目から11行目までがサブディレクトリ型URLのスマホサイトへの切り替えへの設定で、12行目が301リダイレクトの設定になっています。 ディレクトリの名前とサブドメインの名前が同じなので、 .htaccessで301リダイレクト(サブディレクトリ→サブドメインにURL変更) https://www.postit-web.com/2015/07/09/subdomain/を参考にして、 試みてみましたが、うまくいきませんでした。 宜しくお願いします。
回答: 最後の RewriteRule を以下のように変更して、**/s/** を消してしまえばいいのではないでしょうか。 ``` RewriteRule ^hoge/(s/)?(.*)$ http://hoge.example.com/$2 [R=301,L] または RewriteRule ^hoge/(?:s/)?(.*)$ http://hoge.example.com/$1 [R=301,L] ```