【问题标题】:CodeIgniter Anchor error: URL not found on this serverCodeIgniter Anchor 错误:在此服务器上找不到 URL
【发布时间】:2014-02-09 00:21:49
【问题描述】:

我花了几个小时来制作一个简单的锚链接,但没有成功。

我的控制器是

class Welcome extends CI_Controller {
    public function index()
    {
        $this->load->view('template');
    }

    public function contact()
    {
        $this->load->view('contact');
    }        
}

我的template.php 视图基本上是一个带有

的文件
<a class="menuhref"> <?php echo anchor('welcome/contact/','Contato')?> </a>

我在views 目录中也有一个contact.php。

我的config.php

$config['base_url']   = 'localhost'; 

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

template.php 加载并单击链接“contato”时,我想将系统驱动到负责打开页面contact.php 的函数contact()。但是,我收到以下错误:

"/localhost/index.php/welcome/contact" 在此服务器上找不到

缺少什么?

【问题讨论】:

    标签: php codeigniter anchor codeigniter-2


    【解决方案1】:

    base_url 配置必须包含协议尾部斜杠

    来自config.php 文件:

    您的 CodeIgniter 根的 URL。通常这将是您的基本 URL,
    带有斜杠:

    http://example.com/
    

    如果未设置,则 CodeIgniter 将猜测协议、域
    和安装路径。

    因此,您可以如下设置base_url,或者在这种情况下将其留空:

    $config['base_url'] = 'http://localhost/';
    
    # base_url should be absolute, If you've installed CI in sub-folder:
    $config['base_url'] = 'http://localhost/path/to/codeigniter_folder/';
    

    旁注:为了使用anchor()等URL帮助函数,首先加载帮助文件$this-&gt;load-&gt;helper('url');(或加载帮助程序自动通过autoload.php 配置文件)。


    为什么base_url 配置会影响anchor() 功能?

    anchor()函数,uses site_url()辅助函数判断超链接的URL地址。

    site_url() 本身,uses two base_url and index_page 配置创建 URL 地址。

    因此,如果您为 base_url 和/或 index_page 配置分配了错误的值,anchor() 函数将无法正常工作。

    【讨论】:

    • 亲爱的@hashem-qolami 谢谢你的回答。错误变了!现在是“在此服务器上找不到请求的 URL /index.php/welcome/contact”。看来我使用的锚点不正确,因为 url 似乎在寻找目录而不是文件。
    • @DanielTheRocketMan 请使用您使用的当前代码更新问题。
    • @DanielTheRocketMan anchor() 函数的语法是正确的,但我刚刚注意到您输入了大写格式的控制器名称:anchor('Welcome/contact/','Contato')?&gt;anchor()函数中:将Welcome改为welcome全部小写
    • 谢谢你,@Hashem Qolami!正确的 baseUrl 应该是 $config['base_url'] = 'localhost/NetBeansProjects/SocialNetworkExCodeIgnitor'。我之前尝试过这个,但是由于你提到了另一个错误(我也在使用能够运行打开页面的 NetBeans),所以我看不到这个。现在我不明白发生了什么。我将删除上面的编辑并保留您的答案作为问题的答案!
    • 嘿,您知道吗,您可以在 config.php 中的基本路径中使用此代码,然后即使您的项目转移到其他文件夹/服务器 $root 也无需更改任何内容= "http://".$_SERVER['HTTP_HOST']; $root .= str_replace(basename($_SERVER['SCRIPT_NAME']),"",$_SERVER['SCRIPT_NAME']); $config['base_url'] = $root;
    猜你喜欢
    • 2018-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-15
    • 2017-08-07
    • 2017-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多