• ベストアンサー

パラメータの前にスラッシュ

example.com?hoge=1・・・① example.com/?hoge=1・・・② 上記URLで2種類のURLの違いは何でしょうか。 あるサイトに最初にアクセスした時は example.com/keyword?anyword=hoge の形式でしたが、 本日アクセスしたら、 example.com/keyword/?anyword=hoge の形式で keywordの前にスラッシュが付いたものに変わっていました。 なぜ、このような現象が起きたのでしょうか。 また、上記のURL①と②はアクセスしても同じ検索結果でした。

noname#254974
noname#254974
  • PHP
  • 回答数6
  • ありがとう数2

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

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5076/13261)
回答No.6

> example.com にパラメータ anyword は今後も表示される事もありますか? 例示されたパターンは、HTTPのPOSTメソッドとGETメソッド両方でアクセスを受け付ける設計になっているのだと思われます。 POSTメソッドの場合は検索キーワードをリクエストヘッダに入れてアクセスしますし、GETメソッドの場合は検索キーワードをURLに付加してアクセスします。 POSTよGETのどちらで処理されるかはリクエスト元のページの仕様によって決まるので、URLに付加されるかはリクエスト元のページ次第です。

その他の回答 (5)

  • t_ohta
  • ベストアンサー率38% (5076/13261)
回答No.5

> アドレスバー上からプログラム改変と同じなのでしょうか。 アドレスバーからプログラムを改変することはできません。 単にサーバ側でURLの正規化処理をするように設定を変えただけだと思います。

noname#254974
質問者

補足

補足です。 キーワードで「hoge」と入力したURLは アドレスバー上では example.com のままです。 パラメータ anyword を付加して example.com/?anyword=hoge の形でアクセスして キーワードで「hoge」と入力されたURLと同じだった場合、 example.com にパラメータ anyword は今後も表示される事もありますか?

  • t_ohta
  • ベストアンサー率38% (5076/13261)
回答No.4

> example.com?hoge=1 のURLの形式は変わってしまうのでしょうか。 URLの形式が変わると言うのが、どのような状態をイメージされているのか判りませんが、サーバ側の処理としてはどちらも同じモノとして扱っていると思って頂いていいと思います。 スラッシュの有り無しの様な違いはプログラムを設計する上で十分想定している範囲内の事象です。 Webサイトには悪意をもってアクセスしてくるような輩はいくらでもいるので、URLの些細な間違いがあっても障害が起きないよう対策しているモノです。

noname#254974
質問者

補足

不備がありました。 example.com?hoge=1 を example.com/?hoge=1 にアクセスしても結果は同じで、 次回以降 example.com?hoge=1 のURLが example.com/?hoge=1 に自動的に変わった場合、 アドレスバー上からプログラム改変と同じなのでしょうか。

  • notnot
  • ベストアンサー率47% (4847/10260)
回答No.3

http://example.com?hoge=1 http://example.com/?hoge=1 は、同じ意味です。パス部分が無い場合、ホスト名の直後の / はあっても無くても良いです。 http://example.com/keyword?anyword=hoge http://example.com/keyword/?anyword=hoge は違う意味ですが、/keyword というのがディレクトリ名(フォルダ名)である場合は、前者でアクセスすると後者にリダイレクトされることがほとんどでしょう。 以前はリダイレクトされなかったが、今はリダイレクトされると言うことであれば、サイトの再構築とかがあったのでは無いでしょうか。(内容が変わったかどうかはともかく、内部の処理方法を変えた)

回答No.2

外からは知る方法ができませんよ。 それ。 作った人に聞いてみるしか、確実な答えはわかりません。 例えば、uri(urlではなく)が /a/b/c/d?e=50 だったとして、実はbへ与えられてるパラメーターが 「/c/d?e=50」であることもありえますし。 cにパラメーターが「/d?e=50」かもしれません。 一般的には、 example.com/keyword?anyword=hoge この場合は、keywordがスクリプトで、?以降がパラメータ(クエリ) example.com/keyword/?anyword=hoge この場合は、keywordは「フォルダ名」で続く"/"これが、 DirectoryIndexで指定されているデフォルトのファイル名(例えばindex.phpなど) で、同じく?以降がクエリですが、 実は一番最初の example.com/ ← ここの最後の"/"がすでにスクリプトの事もあります。 しかし、それを外から判断はできないのと、 使用する側は知る意味がないので、知りたいなら それを作った方に聞くのが一番である! が、回答になるのです。

  • t_ohta
  • ベストアンサー率38% (5076/13261)
回答No.1

何故かと言われたらサーバ側の仕様変更があったからと言うのが答えだと思います。 URLのうちホスト名から後をどのように処理するかはサーバ側のプログラムで決まります。 ①と②をどのように扱うかもプログラム次第なので、同じように扱うようプログラムするか、別モノとして扱うようプログラムするかはサイトを設計した人の考え方次第です。

noname#254974
質問者

補足

example.com?hoge=1 から example.com/?hoge=1 にアクセスした時、 example.com?hoge=1 のURLの形式は変わってしまうのでしょうか。

関連するQ&A

  • URLの最後にスラッシュをつけたい

    こんにちは。 URLの最後に「/」をつけたくて、htaccessをいじっているのですが、 なかなかうまくいきません。 今の状況としては以下のとおりです。 http://www.example.co.jp/hoge …(1) 上記をクリックすると http://example.co.jp/hoge/ のようになってしまうので、 これを http://www.example.co.jp/hoge/ のようにしたいと思っています。 ※(1)のURLを押すと、「www」がはずれて「hoge」のあとにスラッシュがついてしまいます。 なにかいい方法はないでしょうか? どうぞよろしくお願いします。

    • ベストアンサー
    • HTML
  • URLでフォルダの最後のスラッシュを省略した時の挙動

    Apache サーバを立ててみました。 一応、普通に動いているのですが、サイト配下のフォルダにアクセスする際、 URLの最後のスラッシュを付け忘れるとドメインの www が除去されて、「ページが見つかりません」に なってしまいます。 OK → http://www.example.jp OK → http://www.example.jp/hoge/ http://www.example.jp/hoge でアクセス(最後のスラッシュを付けない)すると http://example.jp/hoge/ となってしまうのはなぜ? Apacheの設定?

  • URL スラッシュ

    www.hoge .com/piyo/***// のような上のリンク先にスラッシュが複数あるURLをクリックしたら、 ホームページが文字だけのサイトに飛ばされました。 末尾のスラッシュが2つある事に気付き、 1つスラッシュを消して再度アクセスしたら、通常通り閲覧できました。 なぜ、文字だけのサイトのような状態になっていたのでしょうか? この現象が起きた場合、HPの更新が出来なくなる事もあるのでしょうか。

  • URL バックスラッシュ

    URLのスラッシュを逆向きにアクセスしたら、通常通りアクセス出来た理由は何故なのでしょうか。 事象として、 www.exampleurl .com\○○○\△△△\××× とアクセスをしたら www.exampleurl .com/○○○/△△△/××× とリダイレクトされたというものです。 今回はこの事象のみ確認されましたが、 URLにバックスラッシュが含まれた場合、サイトやサーバに不具合が発生する事もあり得ますか?

  • URL末尾のスラッシュ

    基本的なことだと思いつつも、うまく検索できなかったので質問させてください。 通常URL中の/は、ディレクトリを表しますが、特にブログのトラックバック等でcgiやphpといったスクリプトの後にスラッシュがついているのをみかけます。 (例) http://hoge-hoge.jp/~/trackback.cgi/4 この場合の/は何を意味するのでしょうか。

    • ベストアンサー
    • Perl
  • "http://hoge.com"と表記している書籍について

    Webサイトでアドレスの最後がフォルダ名になっている場合、大抵はスラッシュの付加は任意となっています。これはほとんどのサーバーが、スラッシュなしでリクエストされた際、スラッシュ付きのアドレスにリダイレクトされるようになっているからです。 例) http://hoge.com にアクセス → http://hoge.com/ にリダイレクト http://hoge.com/about にアクセス → http://hoge.com/about/ にリダイレクト とある書籍にて、「Webページの表示を少しでも高速化したいなら、サイト内でリダイレクトを使用しないことだ」と書かれていました。高速化と言ってもほんの微妙な違いだと思うのですが、そちらの方が速いのならそうするべきですよね。しかし、異分野ならともかく、同分野のIT系・プログラミング系の書籍もほとんどが、参考ページなどとして挙げているURLをスラッシュ無しで記載しています。これはなぜなのでしょうか?ほんの微妙な違いだから無視しているのでしょうか?それとも何か別の理由があるのでしょうか?

  • [PHP]URLパラメータの受け取り方

    こんにちは。 PHPで下記のことを実装しようとしていますが、なかなかうまく行きません。 http://example.com/aaa というURLにアクセスがあった場合、「aaa」だけを抜き出して処理する、 ということを実装したいのですが、上記アドレスにアクセスするとNotFoundになってしまいます。 上記の場合、「aaaというファイルを探しにいく」という処理がされているためNotFoundになることは分かるのですが、どのようにすればindex.phpでaaaをパラメータとして受け取れるのでしょうか? ※システムの都合上、http://example.com/?id=aaaという風には出来ません。 大変恐縮ですがご教授いただけるとありがたいです。

    • ベストアンサー
    • PHP
  • 静的URL変換について

    現在,phpでウェブサイトを作成しているのですが、 サイト内検索をしたときのURLを静的化できないか、考えております 例)getで送った際のURL hoge.com/search.php?keyword=hoge 修正後 hoge.com/kewyword_hoge.php そして、その際にやりたいことは、hoge.com/kewyword_hoge.phpをインデックスさせ このURLのページにアクセスしてきたときにhoge.com/search.php?keyword=hogeを 実行するようにしたいのですが、これって可能でしょうか? 静的URL変換自体は問題ないのですが、 hoge.com/kewyword_hoge.phpにアクセスしてもhoge.com/search.php?keyword=hoge を実行してくれず困っております。 恐れ入りますが、解決策をご教授いただけませんでしょうか? 何卒宜しくお願いします。 また、私のやりたいことは以下のサイトで参考になります。 ■インデックスされているURL(google) http://j-sen.jp/kanto/keyword_%E3%81%86%E3%81%A9%E3%82%93.htm ■サイト内検索のURL http://j-sen.jp/search/?area=kanto&nmin%5Bname%5D=&nmin%5Btime%5D=&nmin%5Bn%5D=&wage=&freeword=%E3%81%86%E3%81%A9%E3%82%93&day=&hour=&feature%5B%5D=&feature%5B%5D=&medical=1&except_medical=0&x=82&y=22 どちらも検索結果は同じですが、サイト内検索のURLを静的化し、 google先生にインデックスさせています。 お手数ですが、改めて解決策のご教授お願い申し上げます。

    • 締切済み
    • PHP
  • URLのパラメータ改ざんとは何でしょうか?

    この記事の文中で 「URLに付加されるパラメータを直接改ざんして不正なアクセスをする」と書かれていますが、これが正直意味が分かりません。 だとすれば、他人や友人のIDを検索する際に、 example.com/user?id=1234 を example.com/user?id=5678 と変えて検索する事も不正アクセス行為なのでしょうか? また、あるウェブサイトの不正アクセス被害の記事の中で、「URLの末尾にあるパラメータに不正なコマンドを混入させ表示させようとするSQLインジェクション」の意味が分かりません。 SQLインジェクションは普通「delete from」や「union select」などの文字列を検索フォームに入れる行為ですが、 パラメータにfrom無しで「delete」だけ入れて検索する行為もそうなのでしょうか? example.com/watch?v=delete など 詳しい解説を宜しくお願いします。 【引用記事】 https://www.techmatrix.co.jp/product/appscan/w_attackofappli/attack1.html

    • ベストアンサー
    • PHP
  • mod_rewriteでURLの書き換えができない

    mod_rewriteでURLの書き換えを行おうと思っていますが なぜだか以下のような現象となりURLの書き換えが正常に行うことが できません。 【期待する動作】 (1)のようなURLでアクセスした場合、(2)のようなURLに 書き換えを行いたいが、(3)のようなURLになってしまい 正常に書き換えが行われない。 (1) http://example.com/hoge/list/01/01 (2) http://example.com/hg/list/360/01 (3) http://example.com/hg/list/.asp/360/01 ※ (1)のURLに含まれない拡張子のようなものが含まれてしまう。 【.htaccessの設定】 RewriteEngine on RewriteBase / RewriteRule ^hoge/list\/?(.*)$ /hg/list/$1 [R=301,L,QSA] 【環境】 OS:CentOs Web:Apache2.x その他:.aspという拡張子のファイルはPHPが動作するように設定してあります。 おそらくどこかの設定でこのような現象になってしまっているのだと思いますが、 どこの設定を見たら良いか検討がつきません。 どんな些細なことでも結構ですので、助言を頂けたら幸いです。

専門家に質問してみよう