CI base_url()混淆

时间:2015-09-07 10:30:54

标签: php codeigniter url

说我有这个代码,

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

该链接将在主页上,该主页的网址为

  

本地主机/项目/主

main是控制器,并且有一个索引函数可以加载主页的视图。我将标题导航和页脚设置为模板,因此在我的索引函数中我有。

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

当我点击位于导航模板中的加入链接时,网址将为

  

本地主机/项目/主/注册

在主控制器上的寄存器功能上我放了一个简单的echo函数来查看它是否有效并且它是否正常工作。

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

令人困惑的是,如果我使用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

我感到困惑的是,我被认为或者仍然在想,如果我点击链接的网址会刷新或者什么的。或者我错了?

我知道我的困惑对其他人来说可能看起来很简单但是我太糊涂了以至于我不知道我应该去哪里澄清这一点。虽然我可以使用第一个我只是想了解为什么..

1 个答案:

答案 0 :(得分:1)

index.php

您可能已经完成了这项工作,但只是为了完成......

如果您希望自己的地址不含index.php,则需要做两件事:

首先,从index.php删除config.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,如果错误,您可以在第{20}行的config.php文件中更改index_page。鼓励您手动设置。

顾名思义,

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

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

site_url()生成controller/method的完整网址。像这样使用它:

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

如果您的base_url例如http://localhost/Project/,则会生成http://localhost/Project/main/register