php - 到底什么是 baseUrl

标签 php zend-framework base-url

我花了一些时间试图理解 baseUrl 是什么(通过学习 Zend Framework),但令人惊讶的是,对于这样一个无处不在的实用程序,甚至没有一个“专家”或博主试图定义 baseUrl 以便学习者知道它是关于什么的。他们都假设你知道它是什么,然后继续推导它,每个人都用自己的方法得出自己的结果。从我到目前为止读到的内容来看:

有些人认为它是一个主页-Url,这是我自然认为的(从名称中暗示),由 $_SERVER["HTTP_HOST"] 访问或 $_SERVER["SERVER_NAME"]但令人惊讶的是,这些似乎只占少数。

有些人认为它是被$_SERVER["REQUEST_URI"]访问的当前页面或 $_SERVER["PHP_SELF"]附加到服务器名称

而其他人则认为它可以是上述任何一种或与此相关的任何 url(好吧,至少这是我的印象),具体取决于用户希望如何使用它。

所以有人可以准确解释 baseUrl 是什么,而不假设我也是“专家”以及为什么我可能需要它。谢谢。

编辑: baseUrl 应该在大多数 Zend 项目上自动设置,但显然不是我的情况。即使我做 echo $this->baseUrl()var_dump($this->baseUrl()) ,我什么也得不到。所以我真的不知道这个实用程序是关于什么的。

最佳答案

关于为什么需要 baseUrl() 工具的简短回答是:

应用的部署位置应该是配置问题,而不是核心应用功能问题

在许多 - 甚至大多数 - 情况下,应用程序的基本 url 将只是 $_SERVER['HTTP_HOST']$_SERVER['SERVER_NAME']

但情况并非总是如此。

要考虑的最简单示例是具有常用页面的标准网站:

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

现在您编写(或购买或下载为 OSS 包)一个博客应用程序,您希望将其部署在 url 下:

http://example.com/blog

博客可以有这样的链接:

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

所有这些链接都位于 /blog 下。

博客应用程序本身应该关注博客内的链接/页面/路由。尽管您的博客模板很可能包含返回网站其余部分的页眉/页脚链接,但核心博客应用程序功能的其余部分不必知道您网站的其余部分。不知何故,博客应用程序需要知道,当他生成指向博客文章和博客类别以及所有其他博客相关页面的链接时,它们都必须以 http://example.com/blog 为前缀.

$_SERVER['HTTP_HOST']$_SERVER['SERVER_NAME'] 不反射(reflect)此环境/部署信息。使用 base-url 值配置 (!) 应用程序并在生成链接时始终使用某种 baseUrl() 函数(使用此配置)是保持核心应用程序功能集中的好方法它自己的业务,而不是外部部署因素。

关于php - 到底什么是 baseUrl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14996129/

相关文章:

php - Zend Framework 和防止胖 Controller

php - 如果菜单位于不同的文件夹中,如何创建网站的 BASE URL?

php - 没有周末的日差

php - 根据另一个表的结果导入mysql

java - 如何从 Java 连接到 SOAP 服务器并运行我的服务器内置方法/服务?

php - Zend Framework 是否有构建 URL 查询字符串的助手?

apache - 在 Symfony2 的配置中动态设置 BaseUrl

Telegram API 基本 URL

javascript - 每秒加载内容,无需单击按钮

php - 将 CSS 应用到使用 PHP include() 或 require() 包含的 PHP 页面