- 締切済み
.htaccessで携帯自動振り分けを設定したら、MT4iへ飛ばない
どうしてもうまくいかなくて悩んでいます。。。 MT4iを設置し、 http://www.mydomain.com/x/blog/mt4i.cgi?id=1 にアクセスすると無事携帯電話からもPCからもブログを読むことができるようになりました。 そこで、次に携帯電話からPC用サイトのトップページ http://www.mydomain.com/ に飛んできた時に、携帯用サイトのトップページ http://www.mydomain.com/m/index.html に自動振り分けするよう、.htaccessを以下のように記述し、public_htmに設置しました。 ---------- RewriteEngine On RewriteCond %{HTTP_USER_AGENT} DoCoMo [NC,OR] RewriteCond %{HTTP_USER_AGENT} J-PHONE [NC,OR] RewriteCond %{HTTP_USER_AGENT} Vodafone [NC,OR] RewriteCond %{HTTP_USER_AGENT} SoftBank [NC,OR] RewriteCond %{HTTP_USER_AGENT} MOT- [NC,OR] RewriteCond %{HTTP_USER_AGENT} UP.Browser [NC,OR] RewriteCond %{HTTP_USER_AGENT} KDDI [NC,OR] RewriteCond %{HTTP_USER_AGENT} DDIPOCKET [NC,OR] RewriteCond %{HTTP_USER_AGENT} WILLCOM [NC,OR] RewriteCond %{HTTP_USER_AGENT} L-mode [NC,OR] RewriteRule ^$ http://www.mydomain.com/m/index.html [R] ---------- すると、今までアクセスできていた携帯用のMT4iブログ http://www.mydomain.com/x/blog/mt4i.cgi?id=1 に以下のようなメッセージが出て、アクセス拒否されてしまうようになってしまいました。 ・IEでアクセスする:「Web サイトによってこのページの表示を拒否されました HTTP 403 」 ・Operaでアクセス:「403 Forbidden」 どこがいけないのでしょうか? 誰か教えていただけると助かります。 何卒よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- mpweb
- ベストアンサー率0% (0/0)
RewriteCondをまとめて書くと、指定したもの以外も全てリダイレクトしてしまう現象が我が家のサーバーでも発生しました。 以下のように一つずつ分けて記述してみてはいかがでしょうか。 家のサーバーではこうすることで思い通りの動作をするようになりましたよ。 RewriteEngine On RewriteCond %{HTTP_USER_AGENT} DoCoMo [NC,OR] RewriteRule ^$ http://www.mydomain.com/m/index.html [R,L] RewriteCond %{HTTP_USER_AGENT} J-PHONE [NC,OR] RewriteRule ^$ http://www.mydomain.com/m/index.html [R,L] RewriteCond %{HTTP_USER_AGENT} Vodafone [NC,OR] RewriteRule ^$ http://www.mydomain.com/m/index.html [R,L] RewriteCond %{HTTP_USER_AGENT} SoftBank [NC,OR] RewriteRule ^$ http://www.mydomain.com/m/index.html [R,L] RewriteCond %{HTTP_USER_AGENT} MOT- [NC,OR] RewriteRule ^$ http://www.mydomain.com/m/index.html [R,L] RewriteCond %{HTTP_USER_AGENT} UP.Browser [NC,OR] RewriteRule ^$ http://www.mydomain.com/m/index.html [R,L] RewriteCond %{HTTP_USER_AGENT} KDDI [NC,OR] RewriteRule ^$ http://www.mydomain.com/m/index.html [R,L] RewriteCond %{HTTP_USER_AGENT} DDIPOCKET [NC,OR] RewriteRule ^$ http://www.mydomain.com/m/index.html [R,L] RewriteCond %{HTTP_USER_AGENT} WILLCOM [NC,OR] RewriteRule ^$ http://www.mydomain.com/m/index.html [R,L] RewriteCond %{HTTP_USER_AGENT} L-mode [NC,OR] RewriteRule ^$ http://www.mydomain.com/m/index.html [R,L]
- heaven-mn
- ベストアンサー率0% (0/0)
ん~? 分かんないですね~・・・ 一番最後の行なんですが、 RewriteRule ^$ http://www.mydomain.com/m/index.html [R] と記述されていますが、 http://www.mydomain.com/m/index.html なんていうファイルは置いてないっていうオチは無いですよね? もしくは、これとは別に.htaccessが置いてあって、 そのせいで制限がかかってるというのもあるかも知れないので、今一度確認されてみてはどうでしょう?
- heaven-mn
- ベストアンサー率0% (0/0)
自分はあんまり詳しくないですが、分かるところまでお答えしようと思います。 最後から2番目の行ですが、 RewriteCond %{HTTP_USER_AGENT} L-mode [NC,OR] ではなくて、 RewriteCond %{HTTP_USER_AGENT} L-mode [NC] だと思います。 そうしないと、ユーザーエージェントとか関係なしにすべて http://www.mydomain.com/m/index.html にリダイレクトされるような気がしますが、どうでしょう? それと、アクセスが拒否されてしまってるみたいですが、 全てのディレクトリが参照不可能になっているのでしょうか? それとも一部のディレクトリだけが参照不可能なのでしょうか? そこのところが分かんないですのでご返答下さい・・・
補足
ご親切にアドバイスいただき、ありがとうございます。 こういうところに質問するのは初めてだったものですから、とても感動&感謝しています! Rewriteの記述ミスの件はありがとうございます。 そのように書き直して対応いたしました。 ただ、、、 アクセス拒否は依然起きています。 blog/mt4i.cgi?id=1 のサイトだけがアクセス拒否されてしまいます。 それ以外はすべて普通にアクセスできます。 なぜなのでしょうか・・・?
補足
ありがとうございます。 はい、 http://www.mydomain.com/m/index.html は確かに存在します。 また別の.htaccessとしては、 http://www.mydomain.com/bp/ という「bp」フォルダ内に別に一つ置いてあります。 ただ、こちらの「bp」フォルダ内の.htaccessがあっても無くても、その上の階層においてある.htaccessに携帯振り分けを記述していなければ、普通に http://www.mydomain.com/x/blog/mt4i.cgi?id=1 にアクセスできます。 携帯振り分けを記述した途端に、 http://www.mydomain.com/x/blog/mt4i.cgi?id=1 にアクセスできなくなってしまうので。。。 ちなみに、携帯振り分けを記述しようとしているほうの.htaccessには、元々以下のような記述をしており、携帯振り分けは追記という形にしているのですが、これが影響しているのでしょうか? ---------- <Files ~ "^.(htaccess|htpasswd)$"> deny from all </Files> Options -Indexes <Files ~ "\.log$> deny from all </Files> <Files ~ "\.csv$> deny from all </Files> <Files ~ "\.dat$> deny from all </Files> AddHandler application/x-httpd-phpcgi .php ----------