好吧,我正在开发核心php,无法为我的应用程序定义恒定的基本URL。
我正在Mac OS上使用xampp,我在htdocs / myproject / private目录中拥有主文件initilize.php,其中包含定义基本URL的代码
$url = "http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
$validURL = str_replace("&", "&", $url);
现在,当我在myproject / index.php中将initialize.php文件包含为
时,<?php
require_once 'private/initialize.php';
header('Location: site/');
我将BASE_URL命名为http://localhost/myproject/site,但是当我将initilize.php文件包含在site / create.php中时,我将BASE_URL命名为 http://localhost/myproject/site/create.php,我无法为myproject定义基本URL,在xampp情况下,它是localhost / myproject,在部署后,它必须是http://subdomain.myproject.com在这方面的任何建议。预先感谢。
答案 0 :(得分:2)
您可以像这样为myproject
目录定义一个静态 base_url :
$protocol = if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 'https://' : 'http://';
$servername = filter_input(INPUT_SERVER, 'SERVER_NAME');
$url = $protocol . $servername;
if (strstr($servername, 'localhost')) {
$url .= '/myproject/'; // add project directory on localhost setup
}
$validURL = str_replace("&", "&", $url);
答案 1 :(得分:1)
您可以通过使用环境变量(.env文件或apache / nginx配置)来完成此操作,也可以如下所示手动进行设置,如果/ myproject部分没有任何魔术可以在本地主机上找到基本URL
$protocol = if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 'https://' : 'http://';
$baseUrl = $protocol . $_SERVER['HTTP_HOST'];
if (strstr($baseUrl, 'localhost')) {
$baseUrl = 'http://localhost/myproject/site';
}
答案 2 :(得分:0)
最后,我通过使用下面的代码来解决我的问题
/*
* Assign the root URL to a PHP constant
* Do not need to include the domain
* Use same document root as web server
* Can dynamically find everything in URL up to "/site"
*/
$site_end = strpos($_SERVER['SCRIPT_NAME'], '/site') + 5;
$doc_root = substr($_SERVER['SCRIPT_NAME'], 0, $site_end);
define("WWW_ROOT", $doc_root);
$url = "http://" . $_SERVER['HTTP_HOST'] . WWW_ROOT;
$validURL = str_replace("&", "&", $url);
define("BASE_URL", $validURL);
它总是返回BASE_URL = http://localhost/myproject/site