質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.12%

ウェブサイトの検索機能や検索結果のURLについて

解決済

回答 5

投稿

  • 評価
  • クリップ 1
  • VIEW 430

usui_orange

score 32

web制作初心者で分からないことが2つあります。

ウェブサイトの検索機能を使っている時に疑問に思ったことです。
例えばTwitterの検索機能で「あいうえお」と検索します。下記がそのURL
https://twitter.com/search?q=%E3%81%82%E3%81%84%E3%81%86%E3%81%88%E3%81%8A&src=typd
これってTwitterのサーバーに「あいうえお.php」とか「あいうえお.txt」というファイルが予め作られていて、それにアクセスした訳ではないですよね。ということはURLのsearch以降に続く文の中でデータを抽出するようなことが書かれている、それに基づいて抽出されたデータを表示している、だけということなのでしょうか?
どう考えてもそうとしか考えられないのですが、URLの中にデータの抽出条件を書くみたいなことやったこと一度もなくて、どういうこと勉強すればこういう表示の仕方が出来るんだろうと思って質問しました。


https://ja.wikipedia.org/wiki/%E3%83%87%E3%82%A3%E3%82%B7%E3%83%87%E3%82%A3%E3%82%A2_%E3%83%95%E3%82%A1%E3%82%A4%E3%83%8A%E3%83%AB%E3%83%95%E3%82%A1%E3%83%B3%E3%82%BF%E3%82%B8%E3%83%BC
イメージ説明

画像はファイナルファンタジーに関係するウィキペディアのURLです。また上の文も同様のURLです。コピペして貼り付けるとURLの表記が変わるのですがこれは一体どういう仕組みなのでしょうか?

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 5

+4

➀について
私はNginxを使ったことがないので、WebサーバーにApacheを使うこととします。
例えばhttp://example.com/へアクセスするとします。
Webサーバーの設定にもよるのですが、大体はhttp://example.com/にアクセスすると
http://example.com/index.htmlなどのファイルにアクセスするようになっています。
DirectoryIndexという設定です

DirectoryIndex index.html


のようにこの設定で書かれたファイルにアクセスします。
もちろん

DirectoryIndex hoge.html


とすると、hoge.htmlにアクセスします。(ディレクトリによってこの設定を変えることもできるのですが)
なので、http://example.com/?search=testのようなURLがある場合、
http://example.com/index.html?search=testのようにWebサーバーでは解釈されるのです。
少し前置きが長くなりましたが、そういうことですね。
質問の内容だと恐らくhttps://twitter.com/index.html等のファイルにsearchという値を渡している訳です。
例えばPHPでは、

$value = filter_input(INPUT_GET, "search");
//や
$value = $_GET['search'];


とするとURLに含まれているsearchという値を取り出すことができます。
その受け取った値をそのファイルの中でごにょごにょして表示させているのです。

➁について
これは、ブラウザの機能ですね。
その16進数を人間に分かりやすいようにブラウザが日本語にしてくれているだけです。
内部ではちゃんと16進数で通信しています。

私も勉強中の身なので、もしかすると不正確な情報があるかもしれません。
最後の文字が「/」で終わっているとどのファイルにアクセスしているのか分かりにくいかもと
思って書いてたら長くなってしまいました。
長文失礼しました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

checkベストアンサー

+3

出尽くした感ありますが。

  1.  

ということはURLのsearch以降に続く文の中でデータを抽出するようなことが書かれている、それに基づいて抽出されたデータを表示している、だけということなのでしょうか?
どう考えてもそうとしか考えられないのですが、URLの中にデータの抽出条件を書くみたいなことやったこと一度もなくて、どういうこと勉強すればこういう表示の仕方が出来るんだろうと思って質問しました。

イメージどおりで合っていると思います。どういうことを勉強すれば、ということですがユーザの操作によって表示がかわる(つまり変化しないHTMLで構成されるのではない)webページを作ると自然と覚えます。
なので、何か作ってください

  1.   こういったツールにencodeURIをさせてみてください。
    間違い承知で分かりやすさ優先でかくと、「urlは英字しか使えないので、そこで日本語を使うための仕組み」がencodeURI、戻すのがdecodeURIです。
    なお、いにしえのブラウザ(ie)で開くと、カタカナになりません。

ちなみに見たものとコピペしたものが違うっていうのは、例えばExcelのセルに関数が書いてあるときって、コピペしたら表示値じゃなくて関数がコピーされるとかそういう事例があるので、コンピュータでは普通のことです。
urlでは英字、が基本なので、chromeなどのブラウザがコピーしたときに空気を読んで、クリップボード(コピペを覚えとくとこ)にencodeURIしたやつを保存してくれてます

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/02/12 11:29

    > いにしえの
    開発元が「もう今後は使わんでや」って言い切ってしまいましたね・・。

    キャンセル

+3

apache httpdなら
Apacheのmod_rewriteモジュールの使い方を徹底的に解説 | OXY NOTES
っていう話です。
他のwebサーバープログラムも同湯yな機能を持っています。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/02/11 19:40

    RFC 3986 のこときいてんじゃないのか?

    キャンセル

  • 2019/02/11 19:48

    そういう話なのかも知んない

    キャンセル

+3


キーワードは
GETパラメータ、クエリストリング

URLの中にデータの抽出条件を書く

そもそもですがURLに書くのではなく、基本はフォームから送信します。

コピペして貼り付けるとURLの表記が変わる

キーワードは
URLエンコード

URLからキーワード部分を抜き出して情報を取得する仕組みは、例えばterataiと同じ。

この質問のURLは
https://teratail.com/questions/173851

questionsのIDの173851を取得する、といったもの。
作りにはよりますがこちらのほうが「URLの中にデータの抽出条件を書く」に近いです。

ただ、取得の仕方がクエリストリングかURIの解析かで違うだけでどちらもサーバー側では「送られたキーワードに基づいてデータを取得する処理」が走っています。
その「データ」はデータベースなのかなんなのかは正確に知る術はありませんが。

タグにPHPなりMySQLなりつけられてますので、そちらを学んでいけばいずれ仕組みや考え方を知ることはできます。
2についてはフレームワークの仕組みも絡んでくるのですぐどうこうではないですが。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/02/11 19:51

    「2がなぜファイル名ないの?」ということであればm6uさんの回答のリンクが参考になるかもしれません。
    「このURIできたら指定したファイルに全て転送(アクセスを集める)」という仕組みです

    キャンセル

+3

https://twitter.com/search?q=~~~というURLに対しては、?の前のhttps://twitter.com/searchに対応するプログラムが起動され、そのプログラムに入力パラメーターとして、?の後のq=~~~という文字列が渡されます。そのプログラムがパラメーターを元にデータベースを検索してその結果でHTMLを作成して表示しています。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.12%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る