.htaccessによるリダイレクト

このQ&Aのポイント
  • .htaccessにおいて画像は除くCGIやPHPなどもサイト内のすべてにiモードID取得のための?guid=onを付与するために以下のように記述しました。
  • 一部CGIにおいてguid=onがURLの最後に付与されていませんでした。調べてみたところ、URLの最後にきちんとguid=onが付与されているものの、一部のURLには付与されていないことが分かりました。
  • これらにもguid=onをつけるにはどのように記述すれば良いか困っています。
回答を見る
  • ベストアンサー

.htaccessによるリダイレクト

.htaccessにおいて画像は除くCGIやPHPなどもサイト内のすべてに iモードID取得のための?guid=onを付与するために以下のように記述しましたところ RewriteEngine On RewriteCond %{HTTP_USER_AGENT} ^DoCoMo.* RewriteCond %{QUERY_STRING} ^$ RewriteCond %{REQUEST_URI} !\.(gif|jpe?g|png|swf|pdf|ico)$ [NC] RewriteRule ^(.*)$ http://homepage.jp/$1?guid=ON [R=302,L] 一部CGIにおいてguid=onがURLの最後に付与されていませんでした。 調べてみたところ http://homepage.jp/○○○.cgiや http://homepage.jp/index.htmlのような というURLにはURLの最後にきちんとguid=onが付与されているものの http://homepage.jp/○○○cgi?id=○○○や http://homepage.jp/○○○cgi&○○&○○ のようなURLにはguid=onが付与されていないことが分かり、 これらにもguid=onをつけるには どのように記述したらいいのか困っております。 よろしくお願いします。

  • CGI
  • 回答数2
  • ありがとう数0

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

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

変数ありの場合が抜けています。 # guid=Onにする RewriteEngine On # query stringなしの場合 RewriteCond %{HTTP_USER_AGENT} ^DoCoMo.* RewriteCond %{QUERY_STRING} ^$ RewriteCond %{REQUEST_URI} !\.(gif|jpe?g|png|swf|pdf|ico)$ [NC] RewriteRule ^(.*)$ http://homepage.jp/$1?guid=ON [R=302,L] # query stringありの場合 RewriteCond %{HTTP_USER_AGENT} ^DoCoMo.* RewriteCond %{QUERY_STRING} !guid=ON$ RewriteCond %{REQUEST_URI} !\.(gif|jpe?g|png|swf|pdf|ico)$ [NC] RewriteRule ^(.*)$ http://homepage.jp/$1?%{QUERY_STRING}&guid=ON [L] 変数を使用する場合としない場合の2つの条件を記載すれば多分問題なくなると思います。

その他の回答 (1)

  • t-okura
  • ベストアンサー率75% (253/335)
回答No.2

RewriteRule の QSA フラグ。

参考URL:
http://wiki.bit-hive.com/tomizoo/pg/mod_rewrite%20-%20QSA%A5%D5%A5%E9%A5%B0

関連するQ&A

  • .htaccessにおける記述について

    .htaccessにおいて画像は除くCGIやPHPなども含むサイト内のすべてに iモードID取得のための?guid=onを付与するために以下のように記述しましたところ RewriteEngine On RewriteCond %{HTTP_USER_AGENT} ^DoCoMo.* RewriteCond %{QUERY_STRING} ^$ RewriteCond %{REQUEST_URI} !\.(gif|jpe?g|png|swf|pdf|ico)$ [NC] RewriteRule ^(.*)$ http://homepage.jp/$1?guid=ON [R=302,L] 一部CGIにおいてguid=onがURLの最後に付与されていませんでした。 調べてみたところ http://homepage.jp/○○○.cgiや http://homepage.jp/index.htmlのような というURLにはURLの最後にきちんとguid=onが付与されているものの http://homepage.jp/○○○cgi?id=○○○や http://homepage.jp/○○○cgi&○○&○○ のようなURLにはguid=onが付与されていないことが分かり、 これらにもguid=onをつけるにはどうしたらいいのか困っております。 初心者なのでできたら簡単に教えていただけると幸いです。

  • .htaccessについて

    ドコモの携帯電話からアクセスしてきた際に URLに?guid=ONを自動的に付与させたいんですが .htaccessに以下のように記述しても付与できていません。 どうしたらいいのでしょうか? RewriteCond %{HTTP_USER_AGENT} ^DoCoMo.* RewriteCond %{QUERY_STRING} !guid=ON RewriteCond %{QUERY_STRING} ^(.+)$ RewriteRule ^(.*)$ $1?%1&guid=ON [R=302,L] またディレクトリの下にあるperlで記述されたcgiやPHPにも .htaccessで一気に付与することは可能なのでしょうか? 初心者なので??と思うことを書いているかもしれませんが その点はどうかご容赦ください。

  • htaccess リダイレクトの記述方法

    「wwwなし http://www.abc.net/」から 「wwwありに統一 sslありのhttps://www.abc.net/」にリダイレクトしたいのですが、以下の記述で合っていますでしょうか。よろしくお願いします。 Options +FollowSymLinks RewriteEngine on RewriteCond %{HTTP_HOST} ^abc.net RewriteRule ^(.*)$ http://www.abc.net/$1 [R=301,L] RewriteEngine on RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

    • ベストアンサー
    • HTML
  • SSLのリダイレクトについて

    sslのリダイレクトの作業を急いでやらないといけないのですが、sslに関しては全くの初心者なので調べながらいろいろやってみましたがどうしてもうまくいかず困っています。。 Wordpressでサイトを作成していてドメイン直下の.htaccessにリダイレクトの記述をしています。 サーバーはGMOのiCLUSTAで、sslはジオトラストです。 http://○○○.jp/ にアクセスした場合に、 https://ssl.○○○.jp/ へリダイレクトされるようにしたいです。 .htaccessの記述内容です # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress RewriteEngine on RewriteCond %{HTTPS} on RewriteRule ^(.*)$ https://ssl.○○○.jp/$1 [R=301,L] この記述をしていますが、リダイレクトされたりされなかったりの不安定な状態です。 されないことの方が多いのでどの条件で動いているのかがわかりません。 RewriteCond %{HTTPS} on を、 RewriteCond %{HTTPS} off にするとリダイレクトされますが、処理がループされていますという表示が出てしまいます。 どのような記述をすればうまくいくのでしょうか?

  • .htaccess 301リダイレクト

    無知な者で解決できずにおります。 ※カテゴリを変更させて頂きました。 宜しくお願い致します。 現在運営しているホームページ(例>http://example.com)のURL正規化(index.html有り無し)を.htaccessにて行おうと下記のように記述したファイルを設置しました。 Options FollowSymLinks RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.example\.com ⇒※wwwはなしに統一 RewriteRule (.*) http://example.com/$1 [R=301,L] ⇒※wwwはなしに統一 RewriteCond %{THE_REQUEST} ^.*/index.html    ⇒※index..htmlはなしに統一 RewriteRule ^(.*)index.html$ http://example.com/$1 [R=301,L] ⇒※index..htmlはなしに統一 設置後の解析では一応WWWもindex.htmlも「なしに統一」となっているようなのですが、1つ問題が発生した為、現在はhtaccessファイル内のindex.htmlに関する部分を削除しております。 その問題とは、 http://example.com/index.htmlに「iframe」で記述している営業日カレンダーが表示されなくなってしまうという問題です。 ※表示されない・・・サーバー側が表示する「not foundエラー」がフレーム内に表示さているように見受けられます。 実際に記述しているタグは <iframe src="http://example.com/calendar/calendar.cgi?mode=show" id="calendar" frameborder="0" scrolling="no"></iframe> というものです。 何方かお知恵をお貸しくだされば幸いです。 宜しくお願い致します。

  • 301リダイレクトの例外処理

    WEBサイト全体に 拡張子がhtmとhtmlが混在していて管理がわずらわしいので、 .htaccessで下記のような設定をしました。 ドメイン直下に.htaccessを置いているので、サイト全体でこの設定が有効に なっているのですが、あるフォルダだけこれが適用されないように 設定をしたいと思います。 いろいろやってみたのですが、今ひとつ正常に動いてくれません。 どのようにすればいいのでしょうか。 -------------------------------------------------------------- Options +FollowSymLinks RewriteEngine on RewriteCond %{HTTP_HOST} ^XXX.jp RewriteRule ^(.*)$ http://www.XXX.jp/$1 [R=301,L] Options +FollowSymLinks RewriteEngine on RewriteCond %{THE_REQUEST} ^.*/index.html RewriteRule ^(.*)index.html$ http://www.XXX.jp/$1 [R=301,L] Options +FollowSymLinks RewriteEngine on RewriteCond %{THE_REQUEST} ^.*/index.htm RewriteRule ^(.*)index.htm$ http://www.XXX.jp/$1 [R=301,L] -------------------------------------------------------------- サーバーはApache/1.3.42 .htaccessファイルを置いているのは、ドメイン直下です。

  • リダイレクトのhtaccessを置くと403エラー

    perlで書いたCGIファイルがあるのですが、スマホ用のリダイレクトhtaccessファイルをトップディレクトリに置いた所、CGIのページが403エラーになってしまいました。 .htaccessファイルを外すと正常に表示するので、原因は.htaccessなのですが、理由が思い当たりません。 CGIのソースは出せないですが、お問い合せフォーム用のCGIです。 何かお気づきの点がありましたら助言お願い致します。 ● .htaccess(トップディレクトリに設置) <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_URI} !/sp/ RewriteCond %{HTTP_USER_AGENT} (iPhone|Android.*Mobile|Windows.*Phone) RewriteRule ^(.*)$ sp/$1 [R] RewriteBase / RewriteCond %{REQUEST_URI} /sp/ RewriteCond %{HTTP_USER_AGENT} !(iPhone|Android.*Mobile|Windows.*Phone) RewriteRule ^sp/(.*)$ $1 [R] RewriteBase / </IfModule> ● ディレクトリ構造 /index.html・・・トップページ /.htaccess・・・上記内容 /contact/all/index.cgi・・・403エラーになるCGI /contact/all/.htaccess・・・「Options ExecCGI」のみ記述 /sp/・・・スマホ用のリダイレクト先ディレクトリ(以下略)

  • httpからhttpsへのリダイレクト方法

    すいません、よくわかりませんので教えて下さい。.htaccessに記述してhttpにアクセス来たものをhttpsへリダイレクトしたいです。 今の状況は下記です。 AddHandler application/x-httpd-php53 .php RewriteEngine On # Main RewriteRule for multidomain. RewriteCond %{HTTP_HOST} ^(sanetsu.com) RewriteCond %{REQUEST_URI} !^/(sanetsu.com)/ RewriteRule ^(.*)$ http://www.sanetsu.com/$1 [L] # Main RewriteRule for multidomain. RewriteCond %{HTTP_HOST} ^(www.burikama.com) RewriteCond %{REQUEST_URI} !^/(www.burikama.com)/ RewriteRule ^(.*)$ /%{HTTP_HOST}/$1/ [L] # Main RewriteRule for multidomain. RewriteCond %{HTTP_HOST} ^(burikama.com) RewriteCond %{REQUEST_URI} !^/(burikama.com)/ RewriteRule ^(.*)$ http://www.burikama.com/$1 [L] # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress すいません、上記の記述をどのように変更したらhttpsへリダイレクトさせることができますでしょうか?前任のweb担当の方と連絡が付かないので教えていただけたらありがたいです。 宜しくお願い致します。

    • ベストアンサー
    • HTML
  • wwwありかつhttpsへリダイレクトさせたい

    .htaccessに以下の記述をしていますが、 ブラウザでURLに”xxxx.jp”と"http://xxxx.jp"と入力してアクセスすると、 https://xxxx.jpにリダイレクトされてしまます。 ドメインxxxx.jpを.htaccessに記載せずにhttps://www.xxxx.jpにリダイレクトさせる記述をご存知でしょうか? wwwありの場合"www.xxxx.jp"、"http://www.xxxx.jp"は意図したとおり”https://www.xxxx.jp"に転送されています。 --- RewriteEngine On RewriteCond %{HTTPS} off RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] ---

    • 締切済み
    • CGI
  • 301リダイレクトの設定について

    「○○○.jp」と「www.○○○.jp」を統一し、どちらのURLからの アクセスでも「○○○.jp」ディレクトリ内のコンテンツが 表示されるように設定したいと考えております。 契約しておりますレンタルサーバ会社では.htaccessファイルの 編集内容についてはサポートしておらず、ネット上で設定方法を 検索して試みておりますが、アクセスすると403のエラーが表示され 上手くいっておりません。 以下に.htaccessの設定内容をとエラーの状況を記載いたします。 Webサーバの運用については知識が皆無の為、非常に難儀しております。 不備があればご指摘いただき、またその他の設定等での不具合の 可能性があれば、それもご教示いただけませんでしょうか。 宜しくお願い申し上げます。 ---------------------------------------------------------------- # Enable RewriteEngine. RewriteEngine On # Main RewriteRule for multidomain. RewriteCond %{HTTP_HOST} ^(◆◆◆.jp|▲▲▲.com|■■■.com|◇◇◇.com|○○○.jp|www.○○○.jp) RewriteCond %{REQUEST_URI} !^/(◆◆◆.jp|▲▲▲.com|■■■.com|◇◇◇.com|○○○.jp|www.○○○.jp)/ RewriteRule ^(.*)$ /%{HTTP_HOST}/$1/ [L] Options +FollowSymLinks RewriteEngine on RewriteCond %{HTTP_HOST} ^www.○○○\.jp RewriteRule ^(.*)$ http://○○○.jp/$1 [R=301,L] ----------------------------------------------------------------