パソコンと携帯の振り分けは、htaccessでエージェントにより振り分けが一般的だと思います。
「RewriteEngine on」で振り分けの場合について。
http://www.hogehoge.com/
http://www.hogehoge.com/mobile/
トップディレクトリにhtaccessを設置した場合、携帯サイトが入っている「mobile」ディレクトリには、「RewriteEngine Off」を記述したhtaccessを設置する必要があります。
普通であれば、これで問題なくパソコンと携帯を振り分ける事ができるのですが、携帯サイトが入っている「mobile」ディレクトリには、動的アドレスを静的に変更するために、htaccessに「RewriteEngine on」が記述されています。
よって、パソコンと携帯の振り分けを無効にするために「RewriteEngine Off」をしなければならないのに、動的アドレスを静的にアドレスにするために、「RewriteEngine on」も記述しなければなりません。
パソコンと携帯の振り分けと、動的を静的にする変換を行うような良い記述方法はあるでしょうか?
ちなみに、パソコントップページはすでに検索エンジンに登録されているため、振り分け用のindex.cgiなどは使用したくないと思っています。
アドバイスをお願い致します。
No.5ベストアンサー
- 回答日時:
出勤前なのでちょっとだけ、、
もしhttpd.confもいじれるのなら
RewriteLog logs/rew_log
RewriteLogLevel 3
を追記すると そのあたりの処理も記録されます
http://www.net-newbie.com/trans/mod_rewrite.html …
No.4
- 回答日時:
#3の訂正 携帯/PC振り分けの RewriteRule部分
RewriteRule ^.*$ /mobile/ [R]
# ↑上の条件 :(!^/mobile) and (携帯電話) の場合に適用
# ここだけはリダイレクトさせないと、その先へ行くときにまずいですね ^.*$ http://hoge.example.com/mobile/ でもいいです
もっと下の
RewriteCond %{REQUEST_URI} ^/mobile <=この行は 有っても良いですが不要ですね
RewriteRule ^mobile/([0-9a-zA-Z_\-]+)
とRewriteRuleで指定してあるので
この回答への補足
ご回答ありがとうございます。
う~ん、上手く行かないです。
パソコン用のアドレスは動的から静的に変換されます。
ですが、パソコンと携帯の振り分けがなぜかうまく動作しません。
(!^/mobile) and(RewriteRuleにマッチ)の場合の
RewriteRule ^([0-9a-zA-Z_\-]+)/([0-9a-zA-Z_\-]+)/([0-9a-zA-Z_\-]+).html$ /shop/index.cgi?type=$1&mode=goods&id=$2 [L]
上記は、下記の間違いでしょうか?
RewriteRule ^([0-9a-zA-Z_\-]+)/review/([0-9a-zA-Z_\-]+).html$ /shop/index.cgi?type=$1&mode=goods&id=$2 [L]
パソコン用のURLの書き換えは、少し試したところ問題はなかったから、このままで良いのかな(ー_ー;
記述には特に問題はない気がするのですが、なぜパソコンと携帯で上手く振り分けができないのか分かりません。
あと、直接携帯の静的アドレスにアクセスした場合、404エラーで上手くアクセスできません。
例:http://www.hogehoge.com//mobile/shop/index.cgi?t …
↓
http://www.hogehoge.com/mobile/book/1001.html
少し凝った事をしようとすると、いろいろと難しいですね。
お手数をおかけしますが、アドバイスをお願い致します。
###############################
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/mobile
RewriteRule ^([0-9a-zA-Z_\-]+)/review/([0-9a-zA-Z_\-]+).html$ /shop/index.cgi?type=$1&mode=goods&id=$2 [L]
# ↑上の条件:(!-f )and (!^/mobile) and(RewriteRuleにマッチ)の場合に適用
RewriteCond %{REQUEST_URI} !^/mobile
RewriteRule ^([0-9a-zA-Z_\-]+)/([0-9a-zA-Z_\-]+)/([0-9a-zA-Z_\-]+).html$ /shop/index.cgi?type=$1&mode=goods&id=$2 [L]
# ↑上の条件: (!^/mobile) and(RewriteRuleにマッチ)の場合に適用
RewriteCond %{REQUEST_URI} !^/mobile
#PCと携帯の振り分け
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} ^KDDI [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^UP.Browser [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^WILLCOM [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^MOT [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^ASTEL [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^DDIPOCKET [NC]
RewriteRule ^.*$ /mobile/ [R]
# ↑上の条件 :(!^/mobile) and (携帯電話) の場合に適用
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^mobile/([0-9a-zA-Z_\-]+)/([0-9a-zA-Z_\-]+).html$ /mobile/shop/index.cgi?type=$1&mode=goods&id=$2 [L]
# ↑上の条件 : ( !-f ) and ( mobile/以下のディレクトリ ) and ( RewriteRuleにマッチ )の時に適用
###############################
No.3
- 回答日時:
うちのサーバー(Fedora5 Linux+Apache2.2.2)では以下で出来たみたいです
/home/tarou/www/.htaccess に
mobileディレクトリ用 .htaccessの記述も統合しました
(単に個人的に 私にはその方が判り易いってことです)
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/mobile
RewriteRule ^([0-9a-zA-Z_\-]+)/review/([0-9a-zA-Z_\-]+).html$ /shop/index.cgi?type=$1&mode=goods&id=$2 [L]
# ↑上の条件:(!-f )and (!^/mobile) and(RewriteRuleにマッチ)の場合に適用
RewriteCond %{REQUEST_URI} !^/mobile
RewriteRule ^([0-9a-zA-Z_\-]+)/([0-9a-zA-Z_\-]+)/([0-9a-zA-Z_\-]+).html$ /shop/index.cgi?type=$1&mode=goods&id=$2 [L]
# ↑上の条件: (!^/mobile) and(RewriteRuleにマッチ)の場合に適用
RewriteCond %{REQUEST_URI} !^/mobile
#PCと携帯の振り分け
RewriteCond %{HTTP_USER_AGENT} ^DoCoMo [NC,OR]
~中略~
RewriteCond %{HTTP_USER_AGENT} ^DDIPOCKET [NC]
RewriteRule ^.*$ /mobile/
# ↑上の条件 :(!^/mobile) and (携帯電話) の場合に適用
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} ^/mobile
RewriteRule ^mobile/([0-9a-zA-Z_\-]+)/([0-9a-zA-Z_\-]+).html$ /mobile/shop/index.cgi?type=$1&mode=goods&id=$2 [L]
# ↑上の条件 : ( !-f ) and ( mobile/以下のディレクトリ ) and ( RewriteRuleにマッチ )の時に適用
###############以上です###########
解説:
RewriteCond 条件1 # <=andになる
RewriteCond 条件2 #
RewriteRule ^/index\.htm$ /yes.htm # 条件1、条件2、RewriteRule の3つが一致した時に実行される
RewriteRule ^/index\.htm$ /no.htm # 条件1、2のどちらかでも一致していないがRewriteRule には合う場合に実行される
http://www.nurs.or.jp/~sug/homep/rewrite/rewrite … <=RewriteCond の項目をお読みください
それから
RewriteRule ^([0-9a-zA-Z_\-]+)/([0-9a-zA-Z_\-]+)/([0-9a-zA-Z_\-]+).html$ http://hoge.example.com/shop/cgi/index.cgi.cgi?t …以下略
とhttp:// から始まるフルURLで書いた場合 同じサーバー内でもリダイレクトするはずなので
http://hoge.example.com/shop/cgi/index.cgi.cgi?t … に対して
http://hoge.example.com/1/2/3.html と言うリンクでアクセスすることは出来ますが
ブラウザのURL欄には 動的アドレスが表示されてしまうと思います
RewriteRule ^([0-9a-zA-Z_\-]+)/([0-9a-zA-Z_\-]+)/([0-9a-zA-Z_\-]+).html$ /shop/index.cgi?t=$1 以下略
だとブラウザのURL欄も
http://hoge.example.com/1/2/3.html のままだと思います
(と言うか私の環境ではそうなりました)
No.2
- 回答日時:
>mobileディレクトリ以下の全てのディレクトリも自動的に適応外になるのでしょうか。
そうだと思います。 としか私には答えられませんが
サブディレクトリでの変換後も
REQUEST_URI は /mobile から始まりますか?
http://hoge.example.com/mobile/01.htm ならいいはずですが
http://hoge.example.com/0/mobile01.htm に変換されるとtopディレクトリの指定で
http://hoge.example.com/mobile/ に再変換されると思います。
その辺りの話は
http://www.nurs.or.jp/~sug/homep/rewrite/rewrite … に書いてあるようです
それでも駄目なら 宜しければ補足に
topディレクトリのと mobileディレクトリ の2つの.htaccess の内容を貼り付けてみてください
(固有名詞が含まれる場合は 伏字か hoge などで)
この回答への補足
ご回答ありがとうございます。
◆トップディレクトリのhtaccess
AddType text/x-server-parsed-html .html
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/mobile
RewriteRule ^([0-9a-zA-Z_\-]+)/review/([0-9a-zA-Z_\-]+).html$ http://www.hogehoge.com/shop/cgi/index.cgi.cgi?t … [L]
RewriteRule ^([0-9a-zA-Z_\-]+)/([0-9a-zA-Z_\-]+)/([0-9a-zA-Z_\-]+).html$ http://www.hogehoge.com/shop/cgi/index.cgi.cgi?t … [L]
#PCと携帯の振り分け
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} ^KDDI [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^UP.Browser [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^WILLCOM [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^MOT [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^ASTEL [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^DDIPOCKET [NC]
RewriteRule ^.*$ http://www.hogehoge.com/mobile/ [L]
◆mobileディレクトリのhtaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([0-9a-zA-Z_\-]+)/([0-9a-zA-Z_\-]+).html$ http://www.hogehoge.com/mobile/shop/index.cgi?ty … [L]
携帯は下記のように動的から静的に変換されます。
http://www.hogehoge.com/mobile/shop/index.cgi?ty …
↓
http://www.hogehoge.com/mobile/book/1001.html
自分でもいろいろと調べているのですが、解決策が見つかりません。
お手数をおかけして申し訳ありませんが、アドバイスを頂けると嬉しく思います。
よろしくお願い致します。
No.1
- 回答日時:
RewriteEngine Off にする意味は ループを避けるためでしょうか?
RewriteCondは複数行書くと(明示的にorを指定しない限り)and条件になることはご存知ですよね?
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/mobile
RewriteCond %{HTTP_USER_AGENT} ^DoCoMo [NC,OR]
中略(他の携帯指定)
RewriteRule 以下略
とすれば/mobile に RewriteEngine Off を書かなくてもすむのでは?
勘違いしてたらゴメンなさいです。
ご回答ありがとうございます。
振り分けについてですが、「RewriteCond %{HTTP_USER_AGENT} ^DoCoMo [NC,OR]」のようにORを指定しております。
あと、「RewriteCond %{REQUEST_URI} !^/mobile」を付け加えてみました。
この記述は、「mobile」ディレクトリは適応外にすると言う意味ですよね?
トップページにアクセスしたら、携帯サイトのトップを表示させる事ができました。(http://www.hogehoge.com/mobile/)
ですが、携帯サイトのトップページのリンクをクリックしても、携帯サイトのトップページしか表示されません。
「RewriteCond %{REQUEST_URI} !^/mobile」は、mobileディレクトリ以下の全てのディレクトリも自動的に適応外になるのでしょうか。
何とも手詰まりな状態です。
自分でももう少し調べてみようと思いますが、引き続きアドバイスをお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) .htaccessファイルの修正がこれで問題ないかどうか 1 2022/04/21 08:42
- WordPress(ワードプレス) httpからhttpsへのリダイレクト設定について 2 2022/04/17 09:49
- その他(プログラミング・Web制作) .htaccessの設定で、httpはhttpsに、且つ、wwwありに統一、の記述方法 2 2023/06/22 10:54
- docomo(ドコモ) クレジットカード認証されない 12 2023/03/06 16:14
- その他(パソコン・スマホ・電化製品) 私のメールアドレスを知らない知り合いから、スマホにEメールがきたのですが、宛先は私の携帯番号、差出人 3 2022/10/26 05:53
- Gmail 10年以上使ってるGoogleアカウント (gmail、YouTube)に、久しぶりにパソコンからロ 3 2022/07/03 03:43
- その他(開発・運用・管理) 【至急】.htaccessによるディレクトリ単位でのリダイレクト 2 2023/08/10 13:46
- 教えて!goo 教えてgooや、gooブログに、ホームぺージのアドレスを記入する事は、goo規約違反に当たりますか? 4 2023/01/26 01:04
- その他(IT・Webサービス) 301リダイレクトの使い方について 7 2022/04/05 17:50
- その他(スマートフォン・携帯電話・VR) 携帯メール・アドレスのドメインを教えてください 4 2023/07/13 10:29
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数のindex.htmlを作ってもい...
-
ホームを index.html から inde...
-
リンク先に日本語フォルダがあ...
-
URLの htmおよびhtml表示の非表...
-
Windows環境下のHTML内部リンク...
-
Index of/ の事なんですが‥。
-
index.htmlファイルのないフォ...
-
複数のindex.htmlが存在するホ...
-
URLの日付について
-
ホームページを作成したら、フ...
-
index.htmlをつけると違う画面...
-
URLにファイル名のないサイトに...
-
XREA使用で作成したHTMLファイ...
-
.htmと.htmlの違い
-
index.phpをindex.htmlにしたい
-
Application.OnTimeで引数付き...
-
リンクのindex.html省略
-
iisがうまく動作しない
-
1つ下の階層のフォルダに相対...
-
URLに関する呼び名について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
1つ下の階層のフォルダに相対...
-
リンク先に日本語フォルダがあ...
-
複数のindex.htmlを作ってもい...
-
数秒で自動リンクするページを...
-
URLの日付について
-
URLに「.html」の拡張子がなく...
-
フォルダ内の最初のファイル名...
-
.htmと.htmlの違い
-
index.htmlファイルはどこに?
-
XREA使用で作成したHTMLファイ...
-
Apacheで、indexの拡張子別に優...
-
URLの書き方
-
htmlでリンクに勝手にindex.htm...
-
webサイトの「index」を非表示...
-
FTPでアップロードした画像...
-
URLの.html省略について
-
index.htmlをつけると違う画面...
-
ホームを index.html から inde...
-
リンクのindex.html省略
-
フォルダにはダミーでもindex.h...
おすすめ情報