Codeigniter路由为静态页面主页工作其他路由而不是页面

时间:2016-01-16 09:10:40

标签: php apache .htaccess codeigniter

当我访问localhost:8080 / ignite_me时,它显示home.php的内容与页眉和页脚,但是当我尝试localhost:8080 / igniteme / test它给了我Apche 404页面和test.php存在于我的视图/页面中在哪里我把我的home.php

甚至localhost:8080 / igniteme / home无效,但localhost:8080 / igniteme显示home.php的内容

routes.php文件

$route['(:any)'] = 'pages/view/$1';
$route['default_controller'] = 'pages/view';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;

Pages.php

<?php
class Pages extends CI_Controller {

    public function _construct()
    {
        parent::_construct();
    }

        public function view($page = 'home')
        {
            if ( ! file_exists(APPPATH.'/views/pages/'.$page.'.php'))
            {
                // Whoops, we don't have a page for that!
                show_404();
            }

            $data['title'] = ucfirst($page); // Capitalize the first letter



            $this->load->view('templates/header', $data);
            $this->load->view('pages/'.$page, $data);
            $this->load->view('templates/footer', $data);
        }
}

的.htaccess

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L] 
</IfModule>

的config.php

$config['base_url'] = 'http://localhost:8080/igniteme/';
$config['index_page'] = '';

我无法理解为什么home.php与localhost:8080 / ignite_me一起使用,为什么不使用localhost:8080 / igniteme / home或任何其他页面无效 我已经从其他堆栈溢出问题中复制了.htaccess,即使使用默认堆栈溢出问题也没有。

这是指向我的完整codeignite文件夹igniteme

的链接

4 个答案:

答案 0 :(得分:2)

试试这个

$config['base_url'] = 'http://localhost:8080/igniteme/';
$config['index_page'] = 'index.php';

答案 1 :(得分:2)

我正在使用wamp我使用下面的htaccess

Options +FollowSymLinks
Options -Indexes
DirectoryIndex index.php
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]

确保在主目录中。

同样在wamp中确保您已启用APACHE MOD REWRITE

滚动/点击并在列表中向下找到rewrite_module点击它然后去重新启动wamp。

enter image description here

答案 2 :(得分:1)

让我们从简单的方法开始

我假设 ignite_me 是您的项目文件夹和views文件夹 你有两个文件test.php和home.php,默认情况下有welcome.php文件。

现在开始配置你的路线

1.首次使用localhost:8080/ignite_me点击网址时,会显示welcome.php文件

因为有欢迎的控制器
 现在首先确定要使哪个控制器默认  假设你已经设置了控制器来测试,所以每次你点击url  测试视图将打开
 对于像这样的配置

在routes.php中

$route['default_controller'] = "test";

现在每次引用视图test.php
如果你想这样访问
    localhost:8080/ignite_me/index.php/test.php它重定向到相同的

现在要删除index.php,我们应该使用.htaccess文件 在

<强>的.htaccess

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]

现在你可以再次访问它了 localhost:8080/ignite_me/index.php/test.php它为您提供404未找到的错误
localhost:8080/ignite_me/test.php它会为您提供该页面

路线的Genereal Ways是

localhost:8080/ignite_me/[controller]/views

答案 3 :(得分:0)

当我将一个codeigniter 2应用程序从windows中的xampp移动到一个ubuntu服务器14.04 LTS时,我遇到了类似的问题

我的.htaccess文件:

int cmpfunc (const void *a, const void *b)
{
    Item i = *((Item*) a);
    Item j = *((Item*) b);
    if (i->acc < j->acc)
        return 1;
    else
        return -1;
}

$ config ['index_page'] =''; //空白,因此index.php不会与.htaccess文件一起显示内联

我启用了路由,除了我的欢迎控制器之外,其他所有内容都获得了404

我所做的是确保启用mod_rewrite并在/etc/apache2/sites-available/000-default.conf上设置以下配置

在“DocumentRoot / var / www / html”下面添加以下行:

RewriteEngine On
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]

通过CTRL-X,“y”和ENTER保存并退出nano编辑器。

然后重启服务:sudo service apache2 restart

希望它为您提供诀窍