CI base_url() confusion


CI base_url() confusion

假设我有这样的代码,

<a href="register">Join</a>

链接应该在主页上,主页的url应该是

localhost/项目/主要

main是控制器,有一个索引函数,用于加载主页的视图。我设置了页眉导航和页脚作为模板,所以在我的索引函数中,我有。

        $this->load->view('templates/header');
        $this->load->view('templates/navigation');
        $this->load->view('homepage');
        $this->load->view('templates/footer');

当我点击位于导航模板中的连接链接时,url将是,

localhost/项目/主/登记

在主控制器上的寄存器函数,我放了一个简单的echo函数,看看它是否工作,它正在工作。

问题是我很困惑,我搜索了如何正确地从视图链接到CI中的另一个视图,我看到使用的base_url()或site_url()函数,我使用base_url,因为我用。htaccess在我的链接上取出了index.php

令人困惑的是,如果我使用base_url()函数,比如

<a href="<?php echo base_url(); ?>main/register">Join</a>

,当然base_url在我的配置是localhost/Project/,所以我希望链接也去主/控制器,就像,

localhost/Project/main/register但是我得到的是

http://localhost/Project/localhost/Project/main/register

我困惑的是,我认为或仍然在想,如果我曾经点击链接的url会刷新或什么的。还是我错了?

我知道我的困惑在别人看来可能很简单,但我太糊涂了,我不知道我应该去哪里澄清这一点。虽然我可以只用第一个,但我只是想理解为什么…

No index.php

你可能已经这样做了,但只是为了完成…

如果你想让你的地址没有index.php,你需要做两件事:

首先,将index.phpconfig.php中移除。

在第32行,更改:

$config['index_page'] = 'index.php';

:

$config['index_page'] = '';

第二,将重写添加到您的.htaccess

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

base_url()site_url()

CodeIgniter试图猜测您网站的base_url,如果它是错误的,您可以在config.php文件的第20行更改它,就在index_page之上。建议您手动设置。

base_url(),顾名思义,打印在config.php文件中设置的或由CodeIgniter猜测的基本URL。例如,使用它来提供cssjs文件的绝对路径,例如:

<link rel="stylesheet" type="text/css" href="<?=base_url()?>assets/style.css">

site_url()controller/method生成整个URL。像这样使用:

<a href="<?=site_url('main/register')?>">Register</a>

如果您的base_url是例如http://localhost/Project/,这将生成http://localhost/Project/main/register