是否有办法在仅使用php的codeigniter中获取基本网址(在codeigniter中为url_helper)。
我的项目地址类似于
http://localhost/proj1/
它可以是任何名称
如何获取将在结构树中的任何文件上提供相同基本URL的URL,具体取决于所有情况,例如http://
或https://
答案 0 :(得分:2)
设置文件 config.php
<?php
define('base_url','http://localhost/proj1/');
?>
在每个页面上都包含config.php。像这样:
page1.php中
<?php
include_once('config.php');
echo base_url;
?>
有关define();
read this
修改1:
如果你想要,你也可以试试这个:
<?php
define('base_url','http://'.$_SERVER['HTTP_HOST'].'/');
?>
或者,如果你使用子文件夹,那么:
$root = "http://".$_SERVER['HTTP_HOST'];
$root .= str_replace(basename($_SERVER['SCRIPT_NAME']),"",$_SERVER['SCRIPT_NAME']);
define('base_url',$root);
编辑2 :试试这个:
define('ROOTPATH', realpath(dirname(__FILE__)) . '/');
// installed in the docroot?
if (realpath(dirname(__FILE__)) == $_SERVER['DOCUMENT_ROOT'])
{
define('ROOT', '/');
}
else
{
define('ROOT', substr(ROOTPATH, strlen($_SERVER['DOCUMENT_ROOT'])+1));
}
$url = (isset($_SERVER['HTTPS']) ? "https://" : "http://") . $_SERVER['HTTP_HOST'] . ROOT;
define('base_url',$url);
echo base_url;exit;
答案 1 :(得分:0)
答案 2 :(得分:0)
这是codeigniter直接从git存储库执行的方式:
https://github.com/EllisLab/CodeIgniter
CodeIgniter / application / config / config.php
/*
|--------------------------------------------------------------------------
| Base Site URL
|--------------------------------------------------------------------------
|
| URL to your CodeIgniter root. Typically this will be your base URL,
| WITH a trailing slash:
|
| http://example.com/
|
| If this is not set then CodeIgniter will guess the protocol, domain and
| path to your installation.
|
*/
$config['base_url'] = '';
CodeIgniter / system / core / Config.php
/**
* Class constructor
*
* Sets the $config data from the primary config.php file as a class variable.
*
* @return void
*/
public function __construct()
{
$this->config =& get_config();
log_message('debug', 'Config Class Initialized');
// Set the base_url automatically if none was provided
if (empty($this->config['base_url']))
{
if (isset($_SERVER['HTTP_HOST']))
{
$base_url = (is_https() ? 'https' : 'http')
.'://'.$_SERVER['HTTP_HOST']
.substr($_SERVER['SCRIPT_NAME'], 0, -strlen(basename($_SERVER['SCRIPT_NAME'])));
}
else
{
$base_url = 'http://localhost/';
}
$this->set_item('base_url', $base_url);
}
}
您应该在配置文件中提供一个基本网址,我认为这将由codeigniter自动加载,base_url()
将返回此值。
每当config.php被实例化时,它会检查是否已经在config.php中配置了基本URL,如果它没有,它将尝试通过检查主机,脚本的协议基本名称等进行猜测。然后调用set_item方法,将$ config ['base_url']设置为上述逻辑确定为基本URL的任何内容