【问题标题】:Codeigniter duplicates base_url()Codeigniter 重复 base_url()
【发布时间】:2016-02-19 05:53:10
【问题描述】:

我遇到了与 base_url 重复的 Codeigniter 的问题。如果我访问控制器中的索引页面,所有 url 都很好,但是当我访问控制器中不是索引页面的页面时(在我的情况下冷却),我会得到奇怪的重复 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');
    }
}

我的 .htaccess 文件

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

配置.php

$config['base_url'] = 'www.mypage.si/';
$config['index_page'] = '';

这是我的 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-->

提前谢谢你!

【问题讨论】:

  • $config['base_url'] = 'http://www.mypage.si/'; 替换$config['base_url'] = 'www.mypage.si/';,它应该可以正常工作
  • 哇,我差点为此头破血流。还有一个,现在所有以这种方式编写的相关链接 都有这样的链接hot.si/services/assets/images/logo.png 如何删除服务?
  • 在前面加前缀echo base_url()
  • 如果资产位于应用程序的根目录中,那么您只需在 url 的开头添加 /
  • 哦,我想我不必那样做。谢谢

标签: php .htaccess codeigniter


【解决方案1】:

默认情况下,Codeigniter 不会将当前协议添加到您的基本 url,要解决您的问题,只需更新:

$config['base_url'] = 'www.mypage.si/';

$config['base_url'] = 'http://www.mypage.si/';

如果您希望这是一个高度动态的作品,这是我目前拥有的基本网址,它永远不需要更新

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

注意:

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

【讨论】:

    【解决方案2】:

    改变这个

    $config['base_url'] = 'www.mypage.si/';
    

    $config['base_url'] = 'http://www.mypage.si/';
    

    我还想在查看文件时建议 site_url 而不是 base_url。例如:

    <li><a href="<?php echo site_url('services/cooling'); ?>">cooling</a></li>
    

    【讨论】:

    • 啊哈哈,好吧,没问题:)
    • @Valor_ 是正确的,你应该在视图文件中使用site_url() 而不是base_url(),因为如果你曾经扩展你的 CI 以在单个 CI 安装中包含多个应用程序,那么你必须经历并改变所有使用base_url()
    • 会的!谢谢你的建议
    猜你喜欢
    • 2018-07-26
    • 2023-04-04
    • 2018-09-17
    • 2012-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-01
    • 2018-11-08
    相关资源
    最近更新 更多