我正在使用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然后它的工作正常。怎么给网址?我很困惑。
答案 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)
在您的基本文件夹
上使用此.htaccessRewriteEngine 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>