您可以使用$_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
)。
如何在这些情况下获得真正的基本网址?
答案 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))));