Codeigniter网址设置为另一个页面

时间:2015-02-04 10:39:35

标签: php codeigniter

我正在使用codeigniter,但我不知道如何将链接放到另一个页面。我的控制器文件名是aboutus.php。我给了一个像

这样的链接
<a href="<?php echo base_url('aboutus'); ?>">AboutUs</a>

我的基本网址是

$config['base_url'] = "http://localhost/project/";
$config['index_page'] = '';
$config['uri_protocol'] = 'AUTO';

但是上面的网址没有用。我直接在浏览器中写了一个url并点击了 http://localhost/project/index.php/aboutus然后它的工作正常。怎么给网址?我很困惑。

6 个答案:

答案 0 :(得分:1)

base_url()将回复:

http://localhost/project

site_url()将回显:

http://localhost/project/index.php

您希望转到http://localhost/project/index.php/aboutus,但base_url()只有http://localhost/project/aboutus才会收到错误。

你可以做两件事,

这样:

<a href="<?php echo base_url('index.php/aboutus'); ?>">AboutUs</a>

表示在index.php

之前添加aboutus

或者这个:

<a href="<?php echo site_url('aboutus'); ?>">AboutUs</a>

表示将base_url()更改为site_url()

确保您正在控制器中加载帮助程序:

$this->load->helper(url);

或者在application/config/autoload.php中转到说:

的行
$autoload['helper'] = array();

并执行此操作:

$autoload['helper'] = array('url');

它将包含在您现在拥有的每个控制器中。

如果您启用了短标记,则可以像这样编写a标记:

<a href="<?=site_url('aboutus');?>">About Us</a>

或者如果你有url助手,你可以这样写:

echo anchor('aboutus', 'About Us', 'title="About Us"');

答案 1 :(得分:0)

尝试使用site_url()而不是base_url(),以便不会跳过index.php

<a href="<?php echo site_url('aboutus'); ?>">AboutUs</a>

https://ellislab.com/codeigniter/user-guide/helpers/url_helper.html

另外,请确保已加载url帮助程序。

$this->load->helper('url'); //can also be done in config/autoload.php

答案 2 :(得分:0)

在使用CI函数base_url()和site_url()之前 您需要在autoload.php或控制器本身中加载URL helper

答案 3 :(得分:0)

如果你在PHP中启用了短标签,你也可以写下链接:

<a href="<?= site_url('controller_name/function_name') ?>">Link Text</a>

答案 4 :(得分:0)

在您的基本文件夹

上使用此.htaccess
RewriteEngine on
RewriteCond $1 !^(index.php|resources|robots.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]

如果你还没有得到结果请在你的apache服务器中启用 mod_rewrite

答案 5 :(得分:0)

您的项目网址看起来好像没有启用php短标记。这不是问题。试试这段代码:

<a href="<?= site_url('index.php/project/aboutus') ?>">About Us</a>