Codeigniter重复base_url()

Val*_*or_ 4 php .htaccess codeigniter

我遇到了Codeigniter的问题,它复制了base_url.如果我访问控制器中的索引页面所有网址都很好,但是当我访问一个不是控制器中的索引页面的页面(在我的情况下冷却)然后我得到像这样的奇怪的重复网址http://www.mypage.si/www.mypage.si/services/colling

例如

这是我的服务控制器

class Services extends CI_Controller {

    public function index() {
        $this->load->view('header');
        $this->load->view('main');
        $this->load->view('footer');
    }

    public function cooling()   {
        $this->load->view('header');
        $this->load->view('cooling');
        $this->load->view('footer');
    }
}
Run Code Online (Sandbox Code Playgroud)

我的.htaccess文件

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
Run Code Online (Sandbox Code Playgroud)

config.php文件

$config['base_url'] = 'www.mypage.si/';
$config['index_page'] = '';
Run Code Online (Sandbox Code Playgroud)

这是我的HTML

     <li><a href="<?php echo base_url('services/cooling'); ?>">cooling</a></li>
     <!-- results in: http://www.mypage.si/www.mypage.si/services/cooling-->
     <img src="assets/images/logo.png" />
     <!-- results in: http://www.mypage.si/www.mypage.si/assets/images/logo.png -->
     <li><a href="<?php echo base_url()."services/cooling"; ?>">cooling</a></li>
     <!-- results in: http://www.mypage.si/www.mypage.si/services/cooling-->
Run Code Online (Sandbox Code Playgroud)

先感谢您!

iam*_*der 7

Codeigniter默认情况下不会将当前协议添加到您的基本网址,以修复您的问题只需更新:

$config['base_url'] = 'www.mypage.si/';
Run Code Online (Sandbox Code Playgroud)

$config['base_url'] = 'http://www.mypage.si/';
Run Code Online (Sandbox Code Playgroud)

如果你想让它成为一个非常有活力的部分,这就是我目前拥有的基本网址,它永远不需要更新

$config['base_url'] = "http".((isset($_SERVER['HTTPS']) && !empty($_SERVER['HTTPS'])) ? "s" : "")."://".$_SERVER['HTTP_HOST']."/";
Run Code Online (Sandbox Code Playgroud)

注意:

如果您使用的是IIS服务器,则可能无法产生相同的结果,因为全局中的HTTPS元素$_SERVER不会以相同的方式填充.