YouTubeの動画ページについての疑問

このQ&Aのポイント
  • YouTubeの個々の動画ページについて、URLの構造やファイルの拡張子について疑問があります。
  • 具体的には、URL内のresultsやwatchが何を表しているのか、またファイルの拡張子を隠す理由について知りたいです。
  • さらに、resultsやwatchが存在しないとTOPページに戻される理由について教えてください。
回答を見る
  • ベストアンサー

youtubeの個々の動画ページについて

現在phpのプログラムを勉強しています。 youtubeの検索結果ページや個々の動画視聴ページURLを見て気になったのですが、 https://www.youtube.com/results?search_query=[検索キーワード] https://www.youtube.com/watch?v=[動画の識別コード] のようなURLの場合、 ?以降のserch_query=[検索キーワード]やv=[動画の識別コード]は$_GETの取得だということは分かるのですが、 ?直前のresultsやwatchは何を表しているのでしょうか? 結果表示ページや視聴ページはそれぞれコンテンツ(検索キーワードや動画コード)だけを書き換えれば、 ページ自体は共通の型となるプログラムファイルを使うのが効率的だと思うので、resultsやwatchはその型となるファイルのファイル名かと思っているのですが、 ファイルの拡張子がなく、$_GETのデータが記述されているのは拡張子を隠しているからでしょうか? また、URLをresultsやwatchまで記述してページを読み込んでみたところ、 TOPページに飛ばされました。 これは、resultやwatchのプログラム内で、取得する$_GETのデータが存在しない場合、TOPページに戻すという仕組みを記述しているからでしょうか? また、最近のWEBページはほとんどがURLにファイルの拡張子がないように見受けられますが、 ファイルの拡張子というのは隠した方が良いのでしょうか? ご回答、よろしくお願いします。

  • PHP
  • 回答数2
  • ありがとう数3

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

  • ベストアンサー
noname#244856
noname#244856
回答No.2

1回Webサーバの役割について考えてみるといいと思います。 「公開ディレクトリ内にファイルを置いて、それに対応するパスでアクセスすると、そのファイルの内容をブラウザに返す」 という処理を何の疑問も無く普段眺めていると思いますが、何もプログラムを動かさずにこんなことが実現できるわけがありません。Webサーバのプログラム、具体的にはApacheやnginxといったものが動いているはずです。 PHPの動作形態には「Webサーバモジュール」「FastCGI」「CGI」といったものがありますが、ここでは初心者に最も身近なWebサーバモジュールについて触れます。「mod_php」と呼ばれることがあります。PHPを独立したプログラムとして動かすのではなく、サーバの機能の一部として実行するということです。XAMPPを利用しているのであれば「Apache + mod_php」という構成になるはずです。 以下、どのようにしてリクエストに対してレスポンスが返されるのか考えてみましょう。 -------------------------------------------- 【クライアント側の事前準備】 1. Webブラウザを起動する。 【サーバ側の事前準備】 1. Apacheを起動する。 2. ApacheがHTTP通信用に80番ポートを監視する。HTTP通信はポートを明示しない場合80番を使用するため。 【アクセス】 ~クライアント側~ 1. 「http://example.com/foo/bar.php」というURLがWebブラウザに入力される。 2. 「example.com」のIPアドレスをDNSサーバに問い合わせる。ここでは「93.184.216.119」を得たとする。 3. 「93.184.216.119」の80番ポートに対して「/foo/bar.php」というパスでHTTPリクエストを送る。 ~サーバ側~ 4. 監視している80番ポートへのリクエストを検知する。 5. 同時に複数のリクエストを捌けるように、事前に起動しておいた親プロセス自身はレスポンスを返す処理をせずに、分岐(fork)した子プロセスに処理を丸投げする。引き続き親は監視処理を行い、子が6以降の処理を担う。 6. 「/foo/bar.php」という文字列を解析し、「公開ディレクトリ/foo/bar.php」へのアクセスであると決定する。この文字列自体にそういう意味があるのではなく、Apacheがあくまでそうしているというだけのことである。 7. 「公開ディレクトリはディレクトリ(当たり前)」→「fooはディレクトリ」→「bar.phpはファイル」というようにファイルを検知するまでパスを辿っていく。もしこのファイルが見つからない場合は404NotFoundを返し、アクセスが禁止されている場合は403Forbiddenを返す。 8. 「.php」を見てPHPファイルであると判断し、mod_phpとしてソースコードの読み取り/処理の実行/レスポンスの生成といった一連の作業を行う。これもあくまでApacheの事前の設定に基づいて行っているだけのことである。 9. 生成したレスポンスをクライアント側に返す。 10. 役目を終えた子プロセスが死ぬ。 ~クライアント側~ 11. レスポンスを読み取る。 12. レスポンスに含まれるHTMLをWebブラウザが解析し、人間が分かりやすいように表示する。 ※ クライアント側のポートは開いているものが自動選択されるようです。 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1121251946 -------------------------------------------- さて強調して書きましたが、パスはあくまでApacheで動かす場合にのみ意味があるものです。世の中にはApache以外で動くWebサイトもたくさんあります。「php_cli」(コマンドラインで動作するPHP)が「Apache + mod_php」の代わりをすることだって出来ちゃいます。 HTTPリスエストをそのまま返すPHPサーバ http://www.1x1.jp/blog/2007/07/php_http_echo_server.html >> ?以降のserch_query=[検索キーワード]やv=[動画の識別コード]は$_GETの取得だということは分かるのですが、 $_GETのような変数が存在するのはおそらくPHPぐらいですが、他の言語にも似たような仕組みはあるでしょうね。 >> ?直前のresultsやwatchは何を表しているのでしょうか? 既に述べたように、実際にこのようなファイルが存在していなくても、この部分を読み取ってそれに応じた処理を行うことだって出来るんです。「resultsというディレクトリやファイルを探しに行く」というのはあくまでApacheの動作です。自分が作るプログラム自身がApacheの代わりにだってなれるんです。 ちなみにPHPに関して… >> 「公開ディレクトリはディレクトリ(当たり前)」→「fooはディレクトリ」→「bar.phpはファイル」というようにファイルを検知するまでパスを辿っていく。 と書いたことには意味があり、途中でファイルが見つかったときには $_SERVER['PATH_INFO'] という情報が定義されます。それほど使われることは無いですが。 http://php.net/manual/ja/reserved.variables.server.php http://qiita.com/mpyw/items/7852213f478e8c5a2802#1-6 >> また、URLをresultsやwatchまで記述してページを読み込んでみたところ、TOPページに飛ばされました。 不正なリクエストと見なされて飛ばされているだけでしょうね。ただここで気を付けてほしいのは、「何が」不正と判断しているかです。もしApache+mod_phpで動いていると仮定すれば以下のような動作になります。 ・ファイルが存在しないとき Apacheデフォルトの404NotFoundのページが返される。 ・ファイルが存在するが、読み取り権限が無いとき Apacheデフォルトの403Forbidenのページが返される。 ・ファイルが存在してmod_phpで実行するが、ソースコード内でパラメータが不正と判断されたとき PHPによって生成されたエラーページが返される。 >> また、最近のWEBページはほとんどがURLにファイルの拡張子がないように見受けられますが、ファイルの拡張子というのは隠した方が良いのでしょうか? 【自分の書いたプログラム自信がサーバとして動いている場合】 ・そもそもファイル拡張子の概念がありません。Javaやnode.jsはこちらに属します。 【Apacheで動いている場合】 ・拡張子の無いファイルをPHPとして実行させることが設定次第で可能です。但しあまりこのような手段は採られません。 ・リクエストがあったとき、パスやクエリストリング(?以降)を事前に設定したルールによって書き換えることが出来ます。そして全てをクエリストリングにまとめ、特定の1ファイル(フレームワークではフロントコントローラと呼ばれる)に飛ばすことが出来ます。非常によく用いられている手法です。

mmm5orz
質問者

お礼

ご回答ありがとうございます! 自分の書いたプログラムをサーバとして動かすことができるんですね。 Apacheの勉強の真っ只中なのでそこまで存じ上げませんでした。 プログラミング初心者の私にはまだきちんとした理解ができていない部分が多いのでせっかく詳しいご回答を頂きましたので、きちんと理解して知識として吸収できるよう頑張ります。 詳しくご説明頂いたのでベストアンサーにさせて頂きます。

その他の回答 (1)

回答No.1

拡張子って多くのWebサーバでは飾り。 resultやwatchはお察しの通り、処理するプログラム。 隠しているというか、フレームワークを使ったりすると、パスのみで動かしたりする。 トップページに飛ばされるのは取得するデータが無い、不正なパラメータ等を判断して飛ばす。 先にも言ったけど、隠しているわけではなくそうやって動くもの。 隠しても特にメリットなっしんぐ。 ヘッダ情報見れば何で動いているかわかる場合もあるし、大体推測できる。

mmm5orz
質問者

お礼

ご回答ありがとうございます! 別に隠しているというわけではないのですね。 フレームワークは使っていないのでこれを気に学習してみます!

関連するQ&A

  • YOUTUBEに動画をUPしました。

    YOUTUBEに動画をUPしました。 説明文のところに自分のブログURLを記述したのですが、そのままですとリンクの青い部分が途中で切れて、有効なリンクになりません。 おそらく何かしらの制限だと思うのですが、その基準が不明です。 URLの長さでしょうか? 解説しているページを検索できませんでした。 よろしくお願いいたします。

  • YouTubeのトップページに自動で表示される動画

    YouTubeのトップページに自動で表示される動画が、似たようなバックグラウンドミュージックの動画ばかりが並んでいて困っています。そういう音楽もよく聞くんですが、もっといろんな動画を見たいので、興味深いものをいろいろ自動で示してほしいですが、何か方法ありますか?もちろんキーワード検索等をするのではなくて、自分が興味がありそうな動画をバリエーション多く自動で示してほしいです。

  • YouTube ダウンロード

    YouTubeの動画をダウンロードしたいんですが… よくわかりません。 ネットで調べてみたものの… 「get_video」というファイルができただけで…再生もできません。 拡張子を変更しもよくわからないし…。 再生用ソフトのサイトに行っても、外国のページで何がなんだかわからないし。怖いし。 どなたか教えていただけませんか? 素人なので、できるだけ詳しい説明がほしいです。

  • youtube動画デフォルトキーワードで貼り付け

    小生ブログを書いていまして、たまにyoutube動画を貼り付けています。 その場合、youtubeから「埋め込みコード」を取得してそのまま貼り付けています。 これを、youtube APIを使って(?)一度貼り付けたら、javascriptでデフォルトのキーワードで 検索、表示させる方法はありますでしょうか? 例えば、いつもはyoutubeで「イチロー」と検索して、「埋め込みコード」取得し貼り付けていますが、 javascript上で値に「イチロー」と入れておけば「イチロー」の動画を表示し、 他の記事で、そのjavascriptの値を「松井」と変えるだけで、「松井」を表示させるようなjavascriptはありますでしょうか? webを検索していたら、テキストボックスに「キーワード」を入れて、「検索」ボタンを押すと動画が下に表示されるなどは見つけられたのですが、上記が見つけられませんでした。 ブログ上では普通に「イチロー」の動画が貼り付けれていますが、裏ではjavascriptで検索して表示しているみたいな事がしたく質問させて頂きました。 ソースなどは初心者なので、例文などをお答え頂ければ助かります。 お願いいたします。<(_ _)>

  • Youtubeで自分の動画を見るとペナルティ?

    Youtubeに動画を投稿している者ですが、自分の動画を見るとその動画が検索上位から落とされてしまいます。 具体的には、とあるキーワードで検索し自分の動画の順位を確認、その動画を自ら視聴した後、再度同じキーワードで検索をかけると順位がガクっと落ちていました。 そういった事が何度かあり、それ以来怖くて自分のページを開くのをためらうようになりました。 しかしコメントの返信や、新しく投稿した動画の映像確認など、どうしても確認せざるを得ない時もありますので大変悩んでいます。 そこで質問なのですが、youtubeにて自分の動画を視聴する事によるこういったペナルティは確認されているのでしょうか? 未だ確信には至っておらず、思い過ごしである事を願っていますがどうなのでしょうか…

  • YouTubeの動画がダウンロードできません。

    こんにちは。 YouTubeで動画をダウンロードしたいのですが、まったくの初心者だからか、3箇所でトライしてみてどこもダメでした。 何が悪いのか教えて下さいましたら幸いです。 1箇所目 【Video Daunloader ver.2.0】 チュートリアル通りに、動画のURLを指定の場所にペーストし、ダウンロードを押すと、通常ですとそのすぐ下の「Download」の枠内にダウンロードURLなどが出るようなのですが、何をやってもその部分が”ERROR”とだけ表示されてしまいます。 2箇所目 【piyo piyo Labs】 ここでは説明の後半部分が全然意味がわからないのですが、同じように「URLをペーストしてボタンを押しましょう」となっているところにそのとおりにすると、”URL生成結果”というのが出て、そこにはちゃんとURLが生成されているようなのですが、そこから次の意味が全然わかりません。『「get_video」というファイルができあがった場合は、拡張子を変更して「(好きな名前).flv」に変更して下さい。』とだけ書いてあるのですが、生成結果で出てくるのはURLのリンクで、そこを押すと「403 - Forbidden」としか出てこないですし、ファイル生成のURLをどこにどういうやり方で拡張子を変えて保存したらいいのかさっぱりわかりません。 3箇所目 【guliverkli】というところ。 ここを教えて下さってるサイトの指示通り、指定のフリーソフトをダウンロードしようとしましたが、IEが「そのサイトは大丈夫ですか?!」みたいなアラートが出て、びびってしまって退散してしまいました。 そもそもYouTubeの特徴や仕組みなどもさっぱり解ってないというのも問題かもしれません・・・。 今回欲しいのは全部CMの動画なのですが、アップされている方がダウンロード出来ない様になさっている可能性はありますでしょうか・・。 ウィンドウズメディアプレイヤーで見れる保存形式で保存したいのですが、一体どうしたらいいのでしょうか(T△T) お分かりになられる方いらっしゃいましたら、どうか教えて下さい! お願いします!

  • YouTubeのURL

    YouTubeのURLで、watchの部分を「hanako」と検索したら、 IDが「hanako」さんのチャンネルに飛びました。 これはなぜなのでしょうか? 例) youtube.com/hanako?v=動画のID

  • リンクをクリックした時にカラムの値を取得するには?

    PHP初心者です。 youtubeの動画を紹介するサイトを作っています。 youtube動画は埋め込みタグを使って自サイトやブログ等のページで鑑賞できるのですが <iframe width="640" height="390" src="http://www.youtube.com/embed/U-42Fcw5eFc" frameborder="0" allowfullscreen></iframe> このような埋め込みタグを大量に配置するとページが非常に重たくなり実用的ではありません。 そこでこのタグの場合ですと「U-42Fcw5eFc」が動画の識別コードになっているようなので それぞれの動画の識別コードをデータベースに入れていき、それぞれの動画にリンクを用意して 訪問者がクリックした動画のみを別フレームページで再生できるという形にしようとしました。 この識別コードを配列$resultsとして取得し、foreachで埋め込み動画を並べることはできたのですが 上記のようなことをするのにどういうスクリプトを書けば実現できるのかわかりません。 ゆくゆくはデータベース内の検索機能などをつけたいのでこのようなことをしたいのですが どのようにすればよいかご教授お願いいたします。

    • ベストアンサー
    • PHP
  • YouTube

    自分で投稿した動画を消したいです。 URLのコマンドから消せますか? 例えば、 「youtube.com / watch ?v=動画のID」 がありますよね。 このURLの末尾に「&delete」 を付けて検索みたいな形で、自分で投稿した動画は消せますか? また、自分のチャンネルを消す際にも、 「youtube.com /delete/user/自分のチャンネルID」 と検索して消せますか? 私個人として大変便利そうですが、 万が一チャンネル名を間違えると大変不安です。 回答をお願いします。

  • youtubeの動画をダウンロードできなくなった

    自分は今までyoutubeの動画ページの右にあるURLをダウンロードページに貼り付けて動画をダウンロードしたたのですが、今動画ページに行っても右にあったはずのURLがでないのです。なぜだかわかる人は是非教えてください。

専門家に質問してみよう