【问题标题】:Code Igniter Cannot access page via direct linkCodeigniter 无法通过直接链接访问页面
【发布时间】:2015-01-28 22:45:09
【问题描述】:

我正在创建一个项目,其中 Code Igniter 作为后端框架,Bootstrap 3 作为前端框架。

我在通过直接调用控制器和方法来访问我的页面时遇到问题。

比如我的控制器是site.php,方法是home。

这就是它的样子。

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Site extends CI_controller {
    public function index(){
        $this->home();
    }

    public function home(){
        $data["title"] ="SmartAgent";

        $this->load->view("site_header");
        $this->load->view("content_home", $data);
        $this->load->view("site_footer");
    }

据我了解,方法索引基本上将方法主页设置为索引页面。

当我在我的网址中输入网址时,例如:

examplesite.co.uk

控制器正确加载了我的主页方法视图,即 content_home.php 并且站点加载了主页以及标题。

但是,如果我输入:

examplesite.co.uk/site/home

这不起作用!而且我不知道为什么,这进一步导致了诸如 URL 不起作用等问题。但是设置了基本 url,我可以很好地加载 CSS、JS 和图像文件。我还启用了助手、路线和其他所有功能。

上面的网址可以加载我正在处理的另一个项目。这就是为什么我知道我错过了什么。

有什么想法吗?

谢谢

【问题讨论】:

  • 请举例说明您的路线application/config/routes.php
  • 你有 .htaccess 从 URL 中删除 index.php 吗?
  • 很可能你需要 htaccess,并设置你的 config/routes.php 和 config/config.php stackoverflow.com/questions/28207257/…
  • 您好,谢谢您的回复,确实是htaccess文件,非常感谢@mustang83
  • 您好@GopakumarGopalan 我确实有一个小问题,我后来发现请在下面查看我的回答,感谢您的帮助。

标签: php codeigniter view controller


【解决方案1】:

Codeigniter 路由是相对于index.php 完成的。

所以你的链接应该是examplesite.co.uk/index.php/site/home

如果这是问题所在,那么您需要一个 .htaccess 文件,并在其中写入

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L] 

(如果我没记错的话,是用手机写的)

然后,您将从您的站点中删除 index.php。

【讨论】:

  • 感谢您的回答,当我如上所述键入我的网站时:examplesite.co.uk/index.php/site/home 这有效,其他方法(例如成员)也有效,即“索引.php/site/members”,但我不太了解 htaccess 文件,它会做什么,为什么我不需要对另一个项目执行此操作,提前谢谢。
  • .htaccess 是 Apache Web 服务器的 Web 配置文件。在有人为您重新配置项目之前,我可以尝试猜测,或者您没有使用 Apache 环境。您所做的就是创建一个 .htaccess 文件(没错,它以点开头)并在文件中放入该文本。这应该重新路由您的所有 url 并从中删除 index.php,因此您可以按预期使用链接。
【解决方案2】:

使用 codeigniter,您需要设置$route[]。这是application/config/routes.php

还可以查看有关这方面的 codeigniter 文档,它非常好并且会解释这一切。

【讨论】:

  • 您好,谢谢您的回复,但如上所述,我已经这样做了。
【解决方案3】:

感谢大家的帮助和解答!

这是我的一个愚蠢的错误,我想让每个人都知道,这样如果有人遇到这个问题,这可能会有所帮助。 @Alexey 上面的回答给了我一个灯泡时刻!所以谢谢你。

基本上在 .htaccess mod rewrite 文件中,可以从 google 下载。我忘记更改位于第 4 行顶部的服务器目录

<IfModule mod_rewrite.c>

RewriteEngine On
RewriteBase /yourfolderdirectoryhere/

如果您不确定或不清楚,请观看下面对我有帮助的教程。

https://www.youtube.com/watch?v=dynPx1B0jis

【讨论】:

    猜你喜欢
    • 2013-11-17
    • 1970-01-01
    • 2023-04-02
    • 2012-05-18
    • 2017-10-10
    • 2016-03-06
    • 2019-07-24
    • 1970-01-01
    • 2023-03-05
    相关资源
    最近更新 更多