■環境
・さくらレンタルサーバ ビジネス
・マルチドメインを使用
■したいこと
・ユーザーエージェント毎にドキュメントルートを振り分けたい
■状況
下記の状況で、上手く動作しません。
○ドキュメントルート
マルチドメインを以下に割り当てている
/home/ユーザー名/www/dev/
配下に
/home/ユーザー名/www/dev/k/
/home/ユーザー名/www/dev/pc/
がある
○htaccess
/home/ユーザー名/www/dev/.htaccess
○htaccessの記述
RewriteEngine on
RewriteBase /dev
# ガラケー
RewriteCond %{HTTP_USER_AGENT} DoCoMo|KDDI|DDIPOKET|UP.Browser|J-PHONE|Vodafone|SoftBank [NC]
RewriteRule ^/(.*)$ /k/$1 [L]
# PC
RewriteRule ^/(.*)$ /pc/$1 [L]
ユーザーエージェント毎の振り分けは上手くいっています。
問題は「^/(.*)$」です。
http://www.hoge.jp/だとダメなのですが、
http://www.hoge.jp//だと振り分けられます。
「^/(.*)$」の「/」が余計なようです。
が、これを取ってしまうと、サーバーエラーになります。
さくらだとRewriteBaseを指定すれば良いとの記事を各所で見て試しましたが、
まった効果なしです。
そもそもRewriteBaseがあっても無くても同じ動作をしてしまいます。
お手数ですが、正しい記述をお教え頂けますでしょうか。
末尾がスラッシュで終わっていてもいなくても良いようにする一例
^/(.*)/*$
早速回答ありがとうございます。
試したのですが、条件に当てはまらず、/dev/にアクセスしてしまいました。
RewriteEngine on RewriteBase / # ガラケー RewriteCond %{HTTP_USER_AGENT} DoCoMo|KDDI|DDIPOKET|UP.Browser|J-PHONE|Vodafone|SoftBank [NC] RewriteRule ^/?(.*)$ /k/$1 [L] # PC RewriteRule ^/?(.*)$ /pc/$1 [L]
早速回答ありがとうございます。
^/?(.*)$だと^/(.*)$もしくは^(.*)$ということですね。
試してみましたが、^(.*)$として解釈され、エラーになってしまいました。
おそらくアクセスする度に条件が一致し、ループしてるようです。