.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」
どこがいけないのでしょうか?
誰か教えていただけると助かります。
何卒よろしくお願いいたします。
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]
ん~?
分かんないですね~・・・
一番最後の行なんですが、
RewriteRule ^$ http://www.mydomain.com/m/index.html [R]
と記述されていますが、
http://www.mydomain.com/m/index.html
なんていうファイルは置いてないっていうオチは無いですよね?
もしくは、これとは別に.htaccessが置いてあって、
そのせいで制限がかかってるというのもあるかも知れないので、今一度確認されてみてはどうでしょう?
この回答への補足
ありがとうございます。
はい、
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
----------
自分はあんまり詳しくないですが、分かるところまでお答えしようと思います。
最後から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
のサイトだけがアクセス拒否されてしまいます。
それ以外はすべて普通にアクセスできます。
なぜなのでしょうか・・・?
- 最新から表示
- |
- 回答順に表示













