簡體   English   中英

如何在核心php中定義Base Url

[英]How to define Base Url in core php

好吧,我正在研究核心php,我無法為我的應用程序定義一個常量的基本URL。

我在mac os上使用xampp,我在htdocs / myproject / private目錄中有主文件initilize.php,其中包含定義基本URL的代碼

$url      = "http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
$validURL = str_replace("&", "&amp", $url);

現在當我在myproject / index.php中包含initialize.php文件時,

<?php
require_once 'private/initialize.php';
header('Location: site/');

我將BASE_URL作為http:// localhost / myproject / site ,但是當我在site / create.php中包含initilize.php文件時,我將BASE_URL作為http://localhost/myproject/site/create.php ,我我無法為myproject定義基本URL,在xampp的情況下是localhost / myproject,在部署之后,它必須是http://subdomain.myproject.com這方面的任何建議。 提前致謝。

您可以為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("&", "&amp", $url);

您可以使用環境變量(.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';
}

最后,我使用下面的代碼解決了我的問題

/*
 * 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("&", "&amp", $url);
define("BASE_URL", $validURL);

它總是返回BASE_URL = http:// localhost / myproject / site

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM