web-dev-qa-db-ja.com

正確にはbaseUrlとは

私はbaseUrlが何であるかを理解するために(Zend Frameworkの学習から)費やしたことがありますが、そのようなユビキタスなユーティリティでは、単一の「エキスパート」やブロガーがbaseUrlを定義しようとしてもいないので、学習者はそれについてです。彼らはみな、あなたがそれが何であるかを知っていると仮定してから、それを導き出し、それぞれが独自の方法を使用して独自の結果に到達します。私がこれまで読んだことから:

Homepage-Urlであると考える人もいます。これは、名前から暗黙にわかるように、_$_SERVER["HTTP_Host"]_または_$_SERVER["SERVER_NAME"]_からアクセスするのが当然だと思いますが、驚くべきことに、これらは少数。

サーバー名に追加された_$_SERVER["REQUEST_URI"]_または_$_SERVER["PHP_SELF"]_によってアクセスされるのが現在のページであると考える人もいます

他の人は、ユーザーがそれをどのように使用したいかに応じて、上記のいずれかまたはその問題のURL(少なくとも、私が得る印象です)であると考えています。

誰かがbaseUrlを正確に説明できますか?私も「エキスパート」であると想定せずに、なぜ私がそれを必要とする可能性があるのでしょうか?ありがとうございました。

編集: baseUrlはほとんどのZendプロジェクトで自動的に設定されることになっていますが、私の場合はそうではありません。 echo $this->baseUrl()またはvar_dump($this->baseUrl())を実行しても、何も得られません。したがって、私はこのユーティリティが何であるのか本当にわかりません。

11
okey_on

baseUrl()機能が必要な理由の簡単な答えは次のとおりです。

アプリがデプロイされる場所は、アプリケーションのコア機能の問題ではなく、構成の問題である必要があります

多くの場合、おそらくほとんどの場合でも、アプリケーションのベースURLは単に_$_SERVER['HTTP_Host']_または_$_SERVER['SERVER_NAME']_になります。

しかし、常にそうであるとは限りません。

検討する最も簡単な例は、通常のページがある標準のWebサイトです。

  • _http://example.com/_
  • _http://example.com/contact_
  • _http://example.com/about_
  • _// etc_

次に、URLの下にデプロイするブログアプリケーションを作成(またはOSSパッケージとして購入またはダウンロード)します。

_http://example.com/blog_

ブログには次のようなリンクを含めることができます。

  • _http://example.com/blog/post/my-post-slug_
  • _http://example.com/blog/categories/some-category_
  • _//etc_

これらのリンクはすべて_/blog_の下にあります。

ブログアプリケーション自体は、ブログ内のリンク/ページ/ルーティングに関するonlyを考慮する必要があります。ブログテンプレートには、残りのサイトへのヘッダー/フッターリンクが含まれている場合がありますが、ブログアプリケーションのコア機能の残りは、サイトの残りの部分を認識している必要はありません。どういうわけか、ブログアプリケーションは、彼がブログ投稿とブログカテゴリ、およびその他すべてのブログ関連ページへのリンクを生成するときに、すべて_http://example.com/blog_で始まる必要があることを知る必要があります。

値_$_SERVER['HTTP_Host']_または_$_SERVER['SERVER_NAME']_は、この環境/デプロイメント情報を反映していません。リンクを生成するときに、ベースURL値でアプリを構成(!)し、一定の種類のbaseUrl()関数(この構成を使用)を一貫して使用することは、コアアプリケーション機能を独自のビジネスに集中させるための良い方法です外部の展開要素ではありません。

19
David Weinraub

あなたのウェブサイトは一連のウェブページで構成されています。各Webページには http://www.your.com/intro.htm のような完全なURL(Uniform Resource Locator)があります。 WebページのURLは通常、同じ文字セットで始まります(この場合は http://www.your.com/ など)。この共通のプレフィックスは、ベースURLと呼ばれるものです。

ベースURLを使用すると、参照する各ページの完全なURLを表示したり入力したりする必要がないため、作業が簡単になります。

または

ドキュメント名または末尾のスラッシュを追加して「相対URL」を「絶対URL」に変換するためにページに割り当てられたURL /

Zend urlを理解するには、これを参照してください link

2
Roopendra