2013-02-21 272 views
7

我花了一段時間嘗試理解的baseUrl是什麼(從學習Zend框架),但令人驚訝的是這樣一個無處不在的工具,而不是一個單一的「專家」或博主甚至試圖定義的baseUrl這樣學習者就會明白這是什麼。他們都假設你知道它是什麼,然後繼續推導它,每個人都用自己的方法來達到他自己的結果。從我讀到目前爲止:到底是什麼的baseUrl

有人認爲這是一個主頁 - 網址,這是我自然認爲它是(由名稱暗示),要訪問$_SERVER["HTTP_HOST"]$_SERVER["SERVER_NAME"]但出人意料地這些似乎在少數。

有些人認爲這是當前頁面被附加到服務器名稱$_SERVER["REQUEST_URI"]$_SERVER["PHP_SELF"]訪問

也有人認爲它可以是任何高於或與此有關的(當然,至少這是在任何URL的我得到的印象),取決於用戶如何使用它。

那麼有人可以請你解釋一下baseUrl究竟是什麼,不要假設我也是「專家」,爲什麼我可能需要它。謝謝。

編輯: baseUrl應該是自動設置在大多數Zend項目,但顯然不是在我的情況。即使我做了echo $this->baseUrl()var_dump($this->baseUrl()),我什麼也沒得到。所以我真的不知道這個工具是關於什麼的。

+0

的BaseURL定義取決於你的服務器上的絕對路徑。如果服務器發生更改,則不需要手動更改它。 – ripa 2013-02-21 06:56:15

回答

17

爲什麼你需要有一個baseUrl()設施簡短的回答是這樣的:

當應用程序部署應該是一個配置問題,而不是一個心病e應用程序功能問題

在許多情況下(甚至可能是大多數情況下),應用程序的基本URL將僅爲$_SERVER['HTTP_HOST']$_SERVER['SERVER_NAME']

但事實並非總是如此。

最簡單的例子要考慮的是一個標準的網站,有一般的網頁:

  • http://example.com/
  • http://example.com/contact
  • http://example.com/about
  • // etc

現在你寫(或購買或作爲OSS包下載)博客應用程序你想在URL下部署:

http://example.com/blog

的博客可以像鏈接:

  • http://example.com/blog/post/my-post-slug
  • http://example.com/blog/categories/some-category
  • //etc

所有這些鏈接居住在之下。

博客應用程序本身應該關注只有帶有鏈接/頁面/路由在博客中。儘管您的博客模板可能包含頁眉/頁腳鏈接到網站的其他部分,但核心博客應用程序功能的其餘部分不應該知道您網站的其他部分。不知何故,博客應用程序需要知道的是,當他產生鏈接到博客和博客類別和所有他的其他博客相關的頁面時,都必須用http://example.com/blog前綴。

$_SERVER['HTTP_HOST']$_SERVER['SERVER_NAME']沒有反映這種環境/部署信息。配置(!)的應用與基礎URL值並堅持使用某種baseUrl()功能(消耗此配置)生成鏈接時是保持你的核心應用程序功能專注於自己的業務,而不是外部部署因素的好方法。

+0

謝謝@All。但是不是baseUrl應該被自動設置?通過所選擇的答案支持[此線索](http://stackoverflow.com/questions/5802501/how-to-set-baseurl?rq=1),但是當我做一個'回聲$這個 - >的baseUrl( );''或'var_dump($ this-> baseUrl());'它什麼也沒有。 – 2013-02-21 17:37:27

+0

有趣的是,就目前而言,在這個問題上接受的答案並不是最高票數。事實上,該框架將嘗試猜測baseUrl。但並不總是正確的,特別是當你在嚴格在服務器公共文檔根目錄之下的某個路徑上進行部署時,或者在服務器設置中出現異常情況時。看到在複雜的算法[的Zend_Controller_Request_Http :: setBaseUrl()](http://framework.zend.com/svn/framework/standard/trunk/library/Zend/Controller/Request/Http.php) – 2013-02-21 18:22:42

2

您的網站由一系列網頁組成。每個網頁都有一個完整的統一資源定位符(URL),如http://www.your.com/intro.htm。 您的網頁網址通常會以相同的一組字母開始,例如http://www.your.com/。這個通用的前綴就是我們所說的基本URL。

使用基本URL簡化了你的工作,你不需要在你想引用的每個頁面的完整URL看到或類型。

或者

通過添加文件名或斜線的分配到一個頁面爲「相對URL」轉換成「絕對URL」的URL/

要了解Zend公司網址請參閱本link