• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:条件で振り分けるhtaccess)

条件で振り分けるhtaccess

このQ&Aのポイント
  • スマートフォン用のサイト作成時に、htaccessを使用して条件でURLを振り分ける方法について質問しています。
  • 現在のhtaccessの条件では、特定のユーザーエージェントとクッキーの値に基づいてURLを振り分けています。
  • 質問者は、画像の拡張子が特定のものである場合にURLの振り分けを制御したいと考えています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

念のため確認ですが。 アクセス先が、/sp/.*$ 以外でも拡張子が gif もしくは jpg の場合は 転送したくない、ということですよね? # Enable RewriteEngine. RewriteEngine On RewriteCond %{REQUEST_URI} !^/sp/.*$ RewriteCond %{REQUEST_URI} !^/.*\.(gif|jpg)$ RewriteCond %{HTTP_USER_AGENT} (iPhone|iPod|Android|BlackBerry|Windows.Phone) [NC] RewriteCond %{HTTP_COOKIE} !viewmode=pc RewriteRule ^(.*)$ /sp/$1 [R=301,L] 何か勘違いしてたらすいません。

tep0607
質問者

お礼

>念のため確認ですが。 >アクセス先が、/sp/.*$ 以外でも拡張子が gif もしくは jpg の場合は? >転送したくない、ということですよね? その通りです。 今試したら、思い通りの挙動になりました!本当にありがとうございます!

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • htaccessでリダイレクトが効かない

    スマーフォンからWEBへアクセスがあった場合、htaccessで/m/へリダイレクトしているのですが、 検索エンジンアプリ(Google/Yahoo)で検索した結果をクリックすると、 リダイレクトが効かず、PCページのトップページが表示される、 あるいは該当のPCのページが表示されるという問題に直面して困っています。 ただ、iPhoneのSafariの検索窓から検索した結果をクリックすると、 問題なくリダイレクトされます。 RewriteEngine On RewriteCond %{REQUEST_URI} !^/m/.*$ RewriteCond %{HTTP_USER_AGENT} (iPhone|iPod|Android|BlackBerry|Windows.Phone) [NC] RewriteCond %{REQUEST_FILENAME} \.(html)$ [NC] RewriteCond %{HTTP_USER_AGENT} !iPad [NC] RewriteCond %{HTTP_COOKIE} !viewmode=pc RewriteCond %{QUERY_STRING} !viewmode=pc RewriteRule ^$ http:\/\/URLを記入しています/m/ [R=301,L] 上記の書き方の何かがおかしいのでしょうか? おわかりになる方いらっしゃいましたら教えていただけませんか。

    • 締切済み
    • CSS
  • htaccess wwwがあるのとないので同じページを表示させることはできますか?

    現在●●.comと■■.comの2つのアドレスを使用していて、 ■■.comをマルチドメインにするため下記をhtaccessに記載しています。 www. ■■.comを追加子ドメインにして ■■.comと同じページを見られるようにするにはどうすればよいでしょうか? # Enable RewriteEngine. RewriteEngine On # Main RewriteRule for multidomain. RewriteCond %{HTTP_HOST} (■■.com) RewriteCond %{REQUEST_URI} !^/(■■.com)/ RewriteRule ^(.*)$ /%{HTTP_HOST}/$1/ [L]

    • ベストアンサー
    • HTML
  • .htaccess の書き方

    以下の .htaccess では、http://hoge.jp への携帯からのアクセスを http://hoge.jp/mobile ディレクトリへ転送させていますが、これを、 http://m.hoge.jp へ転送するには、どう記述を変えれば良いのでしょうか? ちなみに、使用予定のレンタルサーバでは、サブドメインつきのリクエストで 所定のディレクトリへアクセスさせるには、自分で .htaccess を書く必要が あるとのことです。(設定画面で設定できません) PC・携帯からのhttp://hoge.jp へのアクセスを、それぞれ PC: http://www.hoge.jp (/www/) 携帯: http://m.hoge.jp (/m/) という具合に振分転送させたいのですが・・・。 -------------------------------------- #携帯振り分け Options +FollowSymLinks RewriteEngine on RewriteBase / RewriteCond %{REQUEST_URI} !^/mobile RewriteCond %{HTTP_USER_AGENT} DoCoMo [NC,OR] RewriteCond %{HTTP_USER_AGENT} (J-PHONE|Vodafone|Softbank|MOT-) [NC,OR] RewriteCond %{HTTP_USER_AGENT} (KDDI|UP\.Browser) [NC,OR] RewriteCond %{HTTP_USER_AGENT} (PDXGW|DDIPOKET|WILLCOM) [NC,OR] RewriteCond %{HTTP_USER_AGENT} ASTEL [NC,OR] RewriteCond %{HTTP_USER_AGENT} L-mode [NC] RewriteRule ^(.*)$ /mobile/$1 [R,L] #「www」ありに統一 RewriteCond %{HTTP_HOST} ^(hoge\.jp)(:80)? [NC] RewriteRule ^(.*)$ http://www.hoge.jp/$1 [R=301,L]

  • htaccessについて

    HPサイトを携帯・スマートフォンとPCで振り分けたいのですが、 htaccessがうまく機能してくれません。。 携帯でページを開いてもPC用のページが開きます。 RewriteEngine On
 RewriteCond %{HTTP_USER_AGENT} UP.Browser [NC]
RewriteRule ^$ http:// http://あどれす /mobil/index.html [R] #au 

RewriteCond %{HTTP_USER_AGENT} DoCoMo [NC]
RewriteRule ^$ http:// http://あどれす /mobil/index.html [R] #DoCoMo 

RewriteCond %{HTTP_USER_AGENT} SoftBank [NC]
RewriteRule ^$ http://あどれす /mobil/index.html[R] #SoftBank RewriteCond %{HTTP_USER_AGENT} iPhone [NC]
RewriteRule ^$ http:// http://あどれす /mobil/index.html[R] #iPhone RewriteCond %{HTTP_USER_AGENT} iPod [NC]
RewriteRule ^$ http:// http://あどれす /mobil/index.html[R] #iPod RewriteCond %{HTTP_USER_AGENT} Android [NC]
RewriteRule ^$ http:// http://あどれす /mobil/index.html[R] #Android 以上を記入したのですが、どうして出来ないのかわかりますでしょうか。 .htaccessはPCのindexと同じ階層です。 PCの階層にmobilのファイルがおいてあります。 よろしくお願いします

  • htaccessの設定について

    .htaccessについての質問です。 今までメインディレクトリ内に index.html aaa.html の2つがあるとします。 今回、新たにサブディレクトリを作って(sp/) その中に index.html をスマホ用閲覧の為に新たに作りました。 メインディレクトリ内に.htaccessを設置して スマートフォンからindex.htmlにアクセスすると自動で/sp/index.htmlに リダイレクトすることができました。 ただしサブディレクトリ内の sp/index.htmlの中にあるリンク(リンク先はメインディレクトリのaaa.html) にリンクすると/sp/aaa.htmlに切り替わってしまい、当然そのようなページがないので 「ファイルが見つかりません」と表示されてしまいます。 サブディレクトリーからメインディレクトリーにリンクさせる場合、/sp/を付加させないためにはどのように設定したらいいのか教えてくだい。 よろしくお願いいたします。 なお、今のメインディレクトリのhtaccessの記述は DirectoryIndex frontpage.php headpage.shtml index.html RewriteEngine on RewriteCond %{REQUEST_URI} !/sp/ RewriteCond %{HTTP_USER_AGENT} (iPod|iPhone|Android|Windows\ Phone) RewriteRule ^(.*)$ sp/$1 [R] RewriteBase / RewriteCond %{REQUEST_URI} /sp/ RewriteCond %{HTTP_USER_AGENT} !(iPod|iPhone|Android|Windows\ Phone) RewriteRule ^sp/(.*)$ $1 [R] RewriteBase / です。 よろしくお願いいたします。

  • .htaccessの意味を教えてください。

    制作会社が設定した、下記.htaccess の意味を教えて頂けないでしょうか? RewriteEngine On <IfModule mod_rewrite.c> RewriteCond %{REQUEST_URI} /hotel/all/ RewriteCond %{REQUEST_URI} !/stay/hotel/all/ RewriteCond %{REQUEST_URI} !/sp/stay/ RewriteCond %{HTTP_USER_AGENT} (iPod|iPhone|Android.+Mobile|Windows\ Phone) [OR] RewriteCond %{HTTP_USER_AGENT} (\ N-08D\ |\ N-06D\ |\ SC-01C\ |\ SC-02D\ |\ SH-06F\ |\ SH-08E\ |\ SHT22\ |\ SHT21\ |\ SMT-i9100\ |\ SM-T530\ |\ Nexus\ 7\ ) RewriteRule ^(.*)$ /sp/stay/all.html [R,L] RewriteBase / RewriteCond %{REQUEST_URI} /stay/hotel/all/ RewriteCond %{REQUEST_URI} !/sp/stay/ RewriteCond %{HTTP_USER_AGENT} (iPod|iPhone|Android.+Mobile|Windows\ Phone) [OR] RewriteCond %{HTTP_USER_AGENT} (\ N-08D\ |\ N-06D\ |\ SC-01C\ |\ SC-02D\ |\ SH-06F\ |\ SH-08E\ |\ SHT22\ |\ SHT21\ |\ SMT-i9100\ |\ SM-T530\ |\ Nexus\ 7\ ) RewriteRule ^(.*)$ /sp/stay/all.html [R,L] RewriteBase / RewriteCond %{REQUEST_URI} /hotel/all/ RewriteCond %{REQUEST_URI} !/stay/hotel/all/ RewriteCond %{REQUEST_URI} !/stay/hotel/dream/ RewriteCond %{HTTP_USER_AGENT} !(iPod|iPhone|Android.+Mobile|Windows\ Phone) RewriteCond %{HTTP_USER_AGENT} !(\ N-08D\ |\ N-06D\ |\ SC-01C\ |\ SC-02D\ |\ SH-06F\ |\ SH-08E\ |\ SHT22\ |\ SHT21\ |\ SMT-i9100\ |\ SM-T530\ |\ Nexus\ 7\ ) RewriteRule ^(.*)$ /stay/hotel/all/index.php [R,L] RewriteBase / RewriteCond %{REQUEST_URI} !/sp/ RewriteCond %{HTTP_USER_AGENT} (iPod|iPhone|Android.+Mobile|Windows\ Phone) [OR] RewriteCond %{HTTP_USER_AGENT} (\ N-08D\ |\ N-06D\ |\ SC-01C\ |\ SC-02D\ |\ SH-06F\ |\ SH-08E\ |\ SHT22\ |\ SHT21\ |\ SMT-i9100\ |\ SM-T530\ |\ Nexus\ 7\ ) RewriteRule ^(.*)$ sp/$1 [R,L] RewriteBase / RewriteCond %{REQUEST_URI} /sp/ RewriteCond %{HTTP_USER_AGENT} !(iPod|iPhone|Android.+Mobile|Windows\ Phone) RewriteCond %{HTTP_USER_AGENT} !(\ N-08D\ |\ N-06D\ |\ SC-01C\ |\ SC-02D\ |\ SH-06F\ |\ SH-08E\ |\ SHT22\ |\ SHT21\ |\ SMT-i9100\ |\ SM-T530\ |\ Nexus\ 7\ ) RewriteRule ^sp/(.*)$ $1 [R,L] RewriteBase / </IfModule> <IfModule mod_rewrite.c> RewriteCond %{HTTP_USER_AGENT} ^(DoCoMo|KDDI|DDIPOKET|UP\.Browser|J-PHONE|Vodafone|SoftBank) RewriteRule ^$ /m/ [R,L] </IfModule>

  • htaccessの書き方

    RewriteEngine On RewriteCond %{HTTP_HOST} ^dog.abcd.com$ RewriteCond %{REQUEST_URI} !^/dog/ RewriteRule (.*) /dog/$1 RewriteCond %{HTTP_HOST} ^cat.abcd.com$ RewriteCond %{REQUEST_URI} !^/cat/ RewriteRule (.*) /cat/$1 サブドメインを追加するには上記の記述をhtaccessに記入すればよいとサーバー会社の説明にありましたので、その通りにしました。 ところが、htaccessに設定していないサブドメインにアクセスすると、通常のドメインの内容が表示されてしまいます。 登録ドメインがabcd.comだとして、設定していないサブドメインがtest.abcd.comだとすると、test.abcd.comにアクセスするとabcd.comの内容がそのまま表示されてしまいます。 存在しないサブドメインにアクセスすると全てメインドメインの内容が表示されてしまうのは、検索エンジン対策としても思わしくないように思えます。 出来れば、存在しないサブドメインへのアクセスは404エラーになるようにしたいのですが、方法がわかりません。 htaccessで使われる言語の知識がなくチンプンカンプンなので 適当に以下のような感じでいろいろ試行錯誤していますが、なかなか思うようにいきません。 RewriteEngine On RewriteCond %{HTTP_HOST} ^dog.abcd.com$ RewriteCond %{REQUEST_URI} !^/dog/ RewriteRule (.*) /dog/$1 RewriteCond %{HTTP_HOST} ^abcd.com$ RewriteCond %{REQUEST_URI} !^/ RewriteRule (.*) /$1 RewriteCond %{HTTP_HOST} (ここでabcd.comまたはdog.abcd.com以外のリクエストは)$ RewriteCond %{REQUEST_URI} !^/404/ RewriteRule (.*) /404/$1 を表示させる、としたいのですが、このような命令文はありますでしょうか? どなたかアドバイスいただければ大変助かります。

    • ベストアンサー
    • HTML
  • さくらインターネットで.htaccessが動きません。

    さくらインターネットで.htaccessが動きません。 .htaccessをさくらインターネットのレンタルサーバーに置いたところ上手く動いてくれません。 何がいけないのかご教授頂ければと思います。 http://www.systemania.biz/source/keitaihuriwake01.html このページで紹介されている 携帯とPCの振り分けなんですが、 # Options -Indexes # < IfModule mod_rewrite.c> # DoCoMo RewriteEngine On RewriteCond %{HTTP_USER_AGENT} DoCoMo RewriteRule ^$ /mobi/ [R] # Softbank RewriteCond %{HTTP_USER_AGENT} J-PHONE RewriteRule ^$ /mobi/ [R] RewriteCond %{HTTP_USER_AGENT} Vodafone RewriteRule ^$ /mobi/ [R] RewriteCond %{HTTP_USER_AGENT} SoftBank RewriteRule ^$ /mobi/ [R] ~中略~ # PC Opera RewriteCond %{HTTP_USER_AGENT} Opera RewriteRule ^$ /pc/ [R] # Mac Safari RewriteCond %{HTTP_USER_AGENT} Safari RewriteRule ^$ /pc/ [R] # < /IfModule> 上記をそのまま設置した所、振り分けされませんでした。 Optionsを使う事が出来ないと知って、その部分を外したり、IndexIgnore * に代えてみたりしたのですが、全く動いてくれませんでした。 何が問題なのでしょうか? 初心者なので書き足りない情報があるかも知れませんが宜しくお願いします。

  • .htaccess による携帯からのアクセスの振り分け方について教えてください。

    お世話になります。 急遽すぐに解決しなくてはならなくて、困っています。 よろしくお願いいたします。 .htaccess による携帯からのアクセスの振り分け方について教えてください。 .htaccessに下記の通り記述しました。 ---------------------------------------------------------------- RewriteEngine On RewriteCond %{HTTP_USER_AGENT} DoCoMo [OR] RewriteCond %{HTTP_USER_AGENT} J-PHONE [OR] RewriteCond %{HTTP_USER_AGENT} Vodafone [OR] RewriteCond %{HTTP_USER_AGENT} SoftBank [OR] RewriteCond %{HTTP_USER_AGENT} UP.Browser RewriteRule ^$ /mobile/index.html [R] ---------------------------------------------------------------- こちらは問題なく動作するのですが、これですとPCで見た場合自動的にディレクトリ内の直下のindex.html に移動してしまいます。 PCで見た場合も別のファイルに移動させたいのですが、その場合どのように記述したらよいでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • CGI
  • htaccessによる端末ごとによる振り分け

    htaccessによる振り分けに関しまして、 PC:/ スマートフォン:/sp/ モバイル:/m/ 端末ごとに振り分けを行いたいです。 ■PC では、/sp/フォルダ、/m/フォルダにアクセスしても、 URLから、各フォルダが除かれ、PCファイルが読み込まれます。 ■スマートフォンでは、/sp/フォルダが入っていないときは、 問題なく、URLに/sp/が加わり、スマートフォンサイトが読み込まれます。 ですが、http://○○.com/m/index.php等でアクセスを行うと、 http://○○.com/sp/m/index.phpのようなURLになります。 ※これは、http://○○.com/sp/index.phpへアクセスしてほしいです。 ■モバイルでは、/m/フォルダが入っていないときは、 問題なく、URLに/m/が加わり、モバイルサイトが読み込まれます。 ですが、http://○○.com/sp/index.php等でアクセスを行うと、 http://○○.com/m/sp/index.phpのようなURLになります。 ※これは、http://○○.com/m/index.phpへアクセスしてほしいです。 ■モバイル・スマートフォンのリダイレクトに関しまして、 改善するためのご意見をお願い致します。 よろしくお願い致します。 ■htaccessの中身です。 RewriteEngine on #スマートフォン RewriteCond %{REQUEST_URI} !/sp/ RewriteCond %{HTTP_USER_AGENT} (iPod|iPhone|iPad|Android|Windows\ Phone) RewriteRule ^(.*)$ sp/$1 [R] #RewriteRule ^(.*)$ sp/ [R] RewriteBase / #モバイル RewriteCond %{REQUEST_URI} !/m/ RewriteCond %{HTTP_USER_AGENT} (DoCoMo|KDDI|DDIPOKET|UP\.Browser|J-PHONE|Vodafone|SoftBank) RewriteRule ^(.*)$ m/$1 [R] #RewriteRule ^(.*)$ m/ [R] RewriteBase / #PC RewriteCond %{REQUEST_URI} /sp/ RewriteCond %{HTTP_USER_AGENT} !(iPod|iPhone|iPad|Android|Windows\ Phone) RewriteRule ^sp/(.*)$ $1 [R] #RewriteRule ^sp/(.*)$ / [R] RewriteBase / #PC RewriteCond %{REQUEST_URI} /m/ RewriteCond %{HTTP_USER_AGENT} !(DoCoMo|KDDI|DDIPOKET|UP\.Browser|J-PHONE|Vodafone|SoftBank) RewriteRule ^m/(.*)$ $1 [R] #RewriteRule ^m/(.*)$ / [R] RewriteBase /