在codeigniter中找不到页面

时间:2011-03-04 23:38:34

标签: php codeigniter

也许你可以帮助我。我的codeigniter设置有问题。这是一个全新的安装,我所做的就是欢迎控制器:

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

class Welcome extends CI_Controller {

    function __construct()
    {
        parent::__construct();
    }

    function index()
    {
        $this->load->view('welcome_message');
    }

    function test()
    {
        echo "test";
    }
}

/* End of file welcome.php */
/* Location: ./application/controllers/welcome.php */
除此之外,一切都是开箱即用的。这是我正在使用的.htaccess文件:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase / 
    RewriteEngine on

    RewriteCond %{QUERY_STRING} callback
    RewriteRule (.*)  /$1? [R=301,L]

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond $1 !^(index\.php|images|robots\.txt)
    RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
<IfModule !mod_rewrite.c>
    # If we don't have mod_rewrite installed, all 404's
    # can be sent to index.php, and everything works as normal.
    # Submitted by: ElliotHaughin
    ErrorDocument 404 /index.php
</IfModule>

不记得我从哪里得到这个,但它正在使用其他版本的codeigniter。所以现在,当我到达这个网址时:

http://myurl.com/welcome/index

这些页面很好,但是当我到达这个网址时,我得到了:

http://myurl.com/welcome/test

我找不到页面。出于某种原因,我似乎需要为要找到的页面加载视图文件。我已经完成了多次ci安装,这是我第一次遇到这么多问题。

我需要echo这样工作的原因是因为我使用它来使用print_r吐出大量信息,所以我并不总是使用控制器。我有这个安装的另一个问题,但这是另一个问题。

谢谢你们!

更新

这个问题真的很奇怪,这在firefox中不会发生,但它发生在ie和chrome中。我以前从未见过这样的事情。

更新

不幸的是我读错了错误... doh!当我点击欢迎/测试时,我得到一个“哎呀!此链接似乎已被破坏。”,而不是404错误。就是说,我得到了

  

找不到网页HTTP 404   最有可能的原因:•可能有一个   在地址中输入错误。 •如果你   点击一个链接,它可能是出于   日期。        你可以尝试什么:        重新输入地址。

 Go back to the previous page. 

 Go to  and look for the information you want.  

 More information 
     

此错误(未找到HTTP 404)表示   Internet Explorer能够   连接到网站,但页面   你想要的却找不到。它的   可能是网页   暂时不可用。   或者,该网站可能有   更改或删除了网页。对于   有关HTTP错误的更多信息,   请参阅帮助。

如果我尝试点击不存在的页面,我会收到404错误,这是我所期望的。

2 个答案:

答案 0 :(得分:0)

尝试将uri_protocol设置为 $config['uri_protocol'] = "REQUEST_URI";

codeigniter 2 htaccess routing differences

这是我的HTACCESS

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

#Removes access to the system folder by users.
#Additionally this will allow you to create a System.php controller,
#previously this would not have been possible.
#'system' can be replaced if you have renamed your system folder.
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php?/$1 [L]

#When your application folder isn't in the system folder
#This snippet prevents user access to the application folder
#Submitted by: Fabdrol
#Rename 'application' to your applications folder name.
RewriteCond %{REQUEST_URI} ^application.*
RewriteRule ^(.*)$ /index.php?/$1 [L]

#Checks to see if the user is attempting to access a valid file,
#such as an image or css document, if this isn't true it sends the
#request to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]

</IfModule>

<IfModule !mod_rewrite.c> # If we don't have mod_rewrite installed, all 404's # can be sent to index.php, and everything works as normal. # Submitted by: ElliotHaughin

ErrorDocument 404 /index.php

</IfModule>

答案 1 :(得分:0)

嘿Johnathan,我很高兴我能解决你的问题。你所要做的就是启用apache的mod重写。

a2enmod rewrite /etc/init.d/apache2
reload

因为你没有apache的mod重写,代码点火器必须搞砸了一些重写规则,并在帖子后面弄乱你的表单数据。