• ベストアンサー

QUERY_STRINGについて

QUERY_STRINGについてご教授下さい。 例1:http://~/?abc 例2:http://~/abc 通常QUERY_STRINGではURLの?より後ろ部分、 例1ではabcを取得する際に使用するかと思いますが、 今回、この?を無しに例1同様に例2のURLを用いabcの取得をしたいと考えています。 参考URL(下記)のサイトについては私の考えている処理を行っているようです。 よろしくお願い致します。 参考URL: http://phot2.com/press.htm

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

  • ベストアンサー
  • shu_a
  • ベストアンサー率87% (14/16)
回答No.2

具体的な経験のがないのでお教えすることができませんが、 mod_rewrite を使って http://~/?abc で渡されたURLを http://~/abc で置き換えるという正規表現で似たような機能を実現できるかもしれません。

ka_zu57
質問者

お礼

ご教授ありがとうございます。 mod_rewriteを利用することで無事に解決できました。

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

その他の回答 (2)

  • sisya
  • ベストアンサー率39% (97/245)
回答No.3

#1の補足に対しての回答です。 >すみません。 >スクリプトファイル名はindex.phpでよろしいのでしょうか? ああ…やっぱり理解なさっていなかったのですね(汗 ka_zu57さんの質問にあるURL 「http://~/?abc」は .htaccessファイルでデフォルトファイル名を 「index.html」から特定のファイルに変更しています。 それが出来ない限り 上記のURLでのアクセスを実現することは不可能です。 参考URLを参照してください…

参考URL:
http://www.shtml.jp/htaccess/directoryindex.html
全文を見る
すると、全ての回答が全文表示されます。
  • sisya
  • ベストアンサー率39% (97/245)
回答No.1

スクリプト本体のファイル名が URLにかかれていない理由は理解なさっている仮定で 説明させていただきます。 元々$_POSTなどに自動分解してくれているだけなので、 自力で文字列をもらってこればいいのではないでしょうか? 例)fooの内容が引数 if($_ENV{'REQUEST_METHOD'} == "post"){  $foo = array_shift(file("php://input")); }else{  $foo = $_SERVER["QUERY_STRING"]; }

ka_zu57
質問者

補足

すみません。 スクリプトファイル名はindex.phpでよろしいのでしょうか? ご教授頂いた方法を試してみましたがエラーになってしまいます。 サーバーにてAliasの設定も必要なのでしょうか?

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

関連するQ&A

  • $_SERVER["QUERY_STRING"]の仕様について

    $_SERVER["QUERY_STRING"]を使用すると、クエリ情報(URLの"?"以降の文字列)を 取得できると伺ったのですが、私は、下記のように、 http://www.xxx.jp/zzz.php?url=【URL】 と、URLを値として渡すプログラムを作成しています。時にそのURL内にも「?」が 存在する場合もございます。 【例】 http://www.xxx.jp/zzz.php?url=http://www.aaa.com/ss/item.asp?code=007656&item=032648 今のところ、1番目の「?」以降、 url=http://www.aaa.com/ss/item.asp?code=007656&item=032648 を受け取ってくれてはいるのですが、何かのタイミングなどで、 2番目の「?」に反応し、バグを起こさないのか不安です。 どなたか、$_SERVER["QUERY_STRING"]の仕様についてご存知の方は いらっしゃらないでしょうか? 1番目の「?」にしか反応しないということがわかる、もしくは、 2番目の「?」にはこういう場合に反応するということがわかれば対処できるのですが。 どうぞよろしくお願いいたします。

    • 締切済み
    • PHP
  • PHPでのQUERY_STRINGの使い方

    PHPを勉強中です。 URLの?以降の文字列を取得し、それが正規表現で 数字と()、/*+-の数式に一致するかどうかを割り出したいです。 echo preg_match("/[^0-9\(\)\+\*\/-]/", "$_SERVER['QUERY_STRING']"); としたところ、 Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) とエラーが出てしまいます。記述の仕方が悪いのでしょうか。 ご教示お願い致します。

    • ベストアンサー
    • PHP
  • Stringオブジェクトについて

    ある参考書では、Java のメモリー使用効率を改善するために、JVM は「String 定数プール」と呼ばれる特別なメモリー領域を確保していると書いてあり、String を作成する例として次の2つのパターンのコードについて説明している(この例では、定数プール内にほかのString は存在しないものとしている)。 ・パターン(1) String s = "abc"; // 1つのString オブジェクトと         // 1つの参照変数を作成する この例では、"abc" がプールに納められ、変数s がそれを参照する。 ・パターン(2) String s = new String("abc"); // 2つのString オブジェクトと                  // 1つの参照変数を作成する。 このコードでは、new キーワードを使ったので、新しいString オブジェクトが標準の(プールでない)メモリー上に作成され、変数s がそれを参照する。さらに、リテラル"abc" がプールに収められる。  そこで質問ですが、パターン(2) で、変数s と2つのオブジェクトはそれぞれ互いにどのような関係(メモリー上の関係も含めて)を持っているのか。 例えば変数s に対してプリント命令を出したときにJVM はこの2つのオブジェクトに対してどのような処理をするのか。 またこれらのオブジェクトのhashcode はどうなっているのでしょうか。どなたか教えてください。

  • クエリストリング付きURLはインデックスされる?

    例えば下記のようなURLがあったとします。 http://www.sample.com/?lang=ja この時、 http://www.sample.com/ と http://www.sample.com/?lang=ja は別のURLとしてインデックスされるのでしょうか? それとも http://www.sample.com/ としてまとめられてしまうのでしょうか? ご存知の方がいましたら、ご教授願います。

  • 選択クエリを基に不一致クエリを作成したけれど...

    識者の力をお借りしたく質問いたします。 質問ページから不一致クエリに関する内容を参考に、ある不一致クエリを作成しています。 しかし、出来るはずの方法で結果が正しく表示されず途方にくれています。 処理の内容としては、あるクエリのフィールドを参考に不一致クエリで差分レコードを抽出したいというものです。 通常不一致クエリはテーブルの主キーを基に作成するものと私は理解しているのですが、今回の処理では基のテーブルに主キーが無く、(作成できない事情があり)クエリで無理矢理主キーもどきのものを作りました。 クエリで作成したのは、数字6桁(最大で)の後ろにチェックディジットとしてアルファベット1文字を追加した計7文字のフィールドです。 例:131401A 不一致を抽出したい基となる2つのテーブルに対しこのクエリを作成しました。 この2つのクエリから不一致クエリで差分を抽出し、基のテーブルに追加クエリで追加したいのですが、どうやっても不一致項目が表示されません。 根本的にクエリからの不一致クエリは作成できないのでしょうか? よろしくお願いいたします。 ■状況 テーブル1/テーブル2(基となるテーブル、主キー無し) クエリ1/クエリ2(テーブル1/テーブル2のレコードにコードを追加するクエリ) コード1/コード2(クエリ1/クエリ2で作成したコード)例:131401A 不一致クエリ テーブル2 → テーブル1 (リレーションシップ) コード2 条件:Not Null ※テーブル2の方が最新レコードが入っているので、テーブル2の差分レコードをテーブル1に追加したいというのが基本的な内容です。 よろしくお願いいたします。

  • Stringクラスは他のクラスとどう違う?

    Objectクラスを抽象クラスとするサブクラスに Stringというクラスがあります。 ストリングオブジェクトの宣言は下記のようにします。 String[] url = new String[2]; ストリングクラスは以下のように宣言時に初期化が可能です。 String[] url = {"honyahonya.com","0"}; また、以下のような指定も出来ます。 this.method( new String[]{"honyahonya.com","0"} ); そこで質問ですが Stringとはなぜこのような扱い方ができるのですか? 他のクラスとは、例外的に扱いが違うだけなのですか? 初期化で指定した文字列はどのように解釈されて、どういう 扱いがされているのでしょうか? 普段はなんとも思わず使っていますが なんとなく気になりませんか・・・。

    • ベストアンサー
    • Java
  • クエリ付きURLをクエリ無しURLにリダイレクト

    お世話になります。 旧サイト・クエリ付きURLを新サイト・クエリ無しURLに301リダイレクトさせる方法が知りたいです。 旧サイト:"http://www.example.jp/index.php?option=com_virtuemart&page=shop.browse&manufacturer_id=4&Itemid=62&limitstart=0&lang=ja" 新サイト:"http://www.example.jp/brand/nike" 以下は、途中まで記述した設定です。 RewriteCond "%{QUERY_STRING}" "^option=com_virtuemart&page=shop.browse&manufacturer_id=4" [OR] RewriteCond "%{QUERY_STRING}" "^option=com_virtuemart&page=shop.browse&manufacturer_id=4&Itemid=62" [OR] RewriteCond "%{QUERY_STRING}" "^option=com_virtuemart&page=shop.browse&manufacturer_id=4&Itemid=62&limitstart=0" [OR] RewriteCond "%{QUERY_STRING}" "^option=com_virtuemart&page=shop.browse&manufacturer_id=4&Itemid=62&limitstart=0&lang=ja" [OR] RewriteCond "%{QUERY_STRING}" "^option=com_virtuemart&page=shop.browse&manufacturer_id=4&Itemid=62&limitstart=0&lang=en" [OR] RewriteRule パターン http://www.example.jp/brand/nike [R=301,L] orailly「Apache クックブック」を見ながら設定をしているのですが、RewriteRule で正規表現パターンを設定するところで躓いています。何を設定したらよいのか見当がつきません。 ご教授の程、よろしくお願いします。

  • PHPでキーをstringで抜き出す関数ってないですよね?

    PHPでキーをstringで抜き出す関数ってないですよね? ■例 $a['test']; ■期待する結果 test ですが、1行でtestを取得する関数ってないですよね? ない場合、通常どのような関数で取得するのが良いでしょうか?

    • ベストアンサー
    • PHP
  • String型を3つで比較したい!

    String型を3つで比較したい! Compare関数は2つしか比較出来ません。 3つだとSelect文を2重に書くしか方法はないのですか? 参考サイト: http://jeanne.wankuma.com/tips/vb.net/string/compare.html ちなみに、やりたいことは電卓で、.が複数回呼ばれたとき1つだけにしたいのです。 本当は、 If Stirng型今回 = Stirng型前回 = "." Else  処理したい内容 End If です。

  • VBの「As String * 128」とは?

    VBの「As String * 128」とは? Visual Basic 2010 Expressでコンソールアプリケーションを作成しています。 OSのヴァージョンを取得する機能を作成したかったので、 http://hanatyan.sakura.ne.jp/vbhlp/Version.htm を参考にして、OSVERSIONINFOの構造体を定義しました。 しかし szCSDVersion As String * 128 の 「* 128」 の部分で、ステートメントの終わりを指定してくださいとエラーが出ます。 「* 128」とは、いったいどういう意味ですか? また、エラーを無くす方法はありますか? いろいろ検索しましたが、調べ方が悪いのか、分かりませんでした。 よろしくお願いします。