Php 获取真实的基本URL

Php 获取真实的基本URL,php,Php,您可以使用$\u SERVER[SERVER\u NAME]获取基本URL,但有时如果您在同一网站中有不同的项目,则需要将它们保存在不同的目录中。例如,如果您有/var/www/myproject/,则实际的基本URL是http://yourhost.com/myproject/. 如果您尝试使用$\u SERVER[SERVER\u NAME]+$\u SERVER[REQUEST\u URI],它会给出完整的请求URL,当您使用友好URL时,问题会变得更严重。例如,如果你用在类似http:/

您可以使用$\u SERVER[SERVER\u NAME]获取基本URL,但有时如果您在同一网站中有不同的项目,则需要将它们保存在不同的目录中。例如,如果您有/var/www/myproject/,则实际的基本URL是http://yourhost.com/myproject/.

如果您尝试使用$\u SERVER[SERVER\u NAME]+$\u SERVER[REQUEST\u URI],它会给出完整的请求URL,当您使用友好URL时,问题会变得更严重。例如,如果你用在类似http://yourhost.com/myproject/controller/action/ 您无法获取yourhost.com/myproject的实际基本URL


在这些情况下,如何获取真正的基本URL?

定义它。如果您有任何类型的全局项目配置,您可以在那里进行设置。例如,CodeIgniter就是这样做的

define('BASE_URL', '/myproject/'); # Include the host name if you truly must

要计算它,请将以下代码放在项目根目录中:

define('BASE_PATH', str_replace('\\', '/', __DIR__));
define('BASE_URL', preg_replace('|/+|', '/', strtolower(preg_replace('|^'.str_replace('\\', '/', realpath($_SERVER['DOCUMENT_ROOT'])).'|i', '', BASE_PATH))));

如果我没弄错的话,你可能需要这个

$uri = isset($_SERVER['REQUEST_URI']) ? strip_tags($_SERVER['REQUEST_URI']) : '';
$urlvariables = (substr($uri, 0, 1) == '/') ? substr($uri, 1) : $uri;
$variables = explode('/', $uri);
echo $whatyouneed = $_SERVER['HTTP_HOST'] . '/' . $variables['1'];

您可以试一试。

这样做的目的是什么?字符串拆分?似乎是最简单的方法