获取真正的基本URL

时间:2013-12-03 03:12:45

标签: php

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

如果您尝试使用$_SERVER["SERVER_NAME"] + $_SERVER["REQUEST_URI"],它会提供完整的请求网址,当您使用友好网址时问题会变得更糟。例如,如果您在http://yourhost.com/myproject/controller/action/之类的内容中使用它,则无法获得真实的基本网址(yourhost.com/myproject)。

如何在这些情况下获得真正的基本网址?

3 个答案:

答案 0 :(得分:1)

如果我理解你,你可能需要这个......

$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'];

你可以尝试一下。

答案 1 :(得分:0)

定义它。如果你有任何类型的全局项目配置(你应该),你可以在那里进行设置。这或多或少是CodeIgniter(例如)如何做到的。

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

答案 2 :(得分:0)

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

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