- ベストアンサー
パラメータの前にスラッシュ
example.com?hoge=1・・・① example.com/?hoge=1・・・② 上記URLで2種類のURLの違いは何でしょうか。 あるサイトに最初にアクセスした時は example.com/keyword?anyword=hoge の形式でしたが、 本日アクセスしたら、 example.com/keyword/?anyword=hoge の形式で keywordの前にスラッシュが付いたものに変わっていました。 なぜ、このような現象が起きたのでしょうか。 また、上記のURL①と②はアクセスしても同じ検索結果でした。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
> example.com にパラメータ anyword は今後も表示される事もありますか? 例示されたパターンは、HTTPのPOSTメソッドとGETメソッド両方でアクセスを受け付ける設計になっているのだと思われます。 POSTメソッドの場合は検索キーワードをリクエストヘッダに入れてアクセスしますし、GETメソッドの場合は検索キーワードをURLに付加してアクセスします。 POSTよGETのどちらで処理されるかはリクエスト元のページの仕様によって決まるので、URLに付加されるかはリクエスト元のページ次第です。
その他の回答 (5)
- t_ohta
- ベストアンサー率38% (5292/13827)
> アドレスバー上からプログラム改変と同じなのでしょうか。 アドレスバーからプログラムを改変することはできません。 単にサーバ側でURLの正規化処理をするように設定を変えただけだと思います。
- t_ohta
- ベストアンサー率38% (5292/13827)
> example.com?hoge=1 のURLの形式は変わってしまうのでしょうか。 URLの形式が変わると言うのが、どのような状態をイメージされているのか判りませんが、サーバ側の処理としてはどちらも同じモノとして扱っていると思って頂いていいと思います。 スラッシュの有り無しの様な違いはプログラムを設計する上で十分想定している範囲内の事象です。 Webサイトには悪意をもってアクセスしてくるような輩はいくらでもいるので、URLの些細な間違いがあっても障害が起きないよう対策しているモノです。
補足
不備がありました。 example.com?hoge=1 を example.com/?hoge=1 にアクセスしても結果は同じで、 次回以降 example.com?hoge=1 のURLが example.com/?hoge=1 に自動的に変わった場合、 アドレスバー上からプログラム改変と同じなのでしょうか。
- notnot
- ベストアンサー率47% (4900/10361)
http://example.com?hoge=1 http://example.com/?hoge=1 は、同じ意味です。パス部分が無い場合、ホスト名の直後の / はあっても無くても良いです。 http://example.com/keyword?anyword=hoge http://example.com/keyword/?anyword=hoge は違う意味ですが、/keyword というのがディレクトリ名(フォルダ名)である場合は、前者でアクセスすると後者にリダイレクトされることがほとんどでしょう。 以前はリダイレクトされなかったが、今はリダイレクトされると言うことであれば、サイトの再構築とかがあったのでは無いでしょうか。(内容が変わったかどうかはともかく、内部の処理方法を変えた)
- AsarKingChang
- ベストアンサー率46% (3467/7474)
外からは知る方法ができませんよ。 それ。 作った人に聞いてみるしか、確実な答えはわかりません。 例えば、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% (5292/13827)
何故かと言われたらサーバ側の仕様変更があったからと言うのが答えだと思います。 URLのうちホスト名から後をどのように処理するかはサーバ側のプログラムで決まります。 ①と②をどのように扱うかもプログラム次第なので、同じように扱うようプログラムするか、別モノとして扱うようプログラムするかはサイトを設計した人の考え方次第です。
補足
example.com?hoge=1 から example.com/?hoge=1 にアクセスした時、 example.com?hoge=1 のURLの形式は変わってしまうのでしょうか。
補足
補足です。 キーワードで「hoge」と入力したURLは アドレスバー上では example.com のままです。 パラメータ anyword を付加して example.com/?anyword=hoge の形でアクセスして キーワードで「hoge」と入力されたURLと同じだった場合、 example.com にパラメータ anyword は今後も表示される事もありますか?