codeigniter中的url_suffix无法正常工作

时间:2012-02-17 12:05:28

标签: codeigniter

我是Codeigniter的新手并使用Codeigniter 1.7,我在根目录中创建了一个.htaccess文件,代码为:

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

从网址中删除index.php,然后添加

$config['url_suffix'] = ".html";

到config.php文件,为所有页面提供默认后缀。之后我用这段代码创建了一个控制器test.php:

class Test extends Controller{

function test(){
    parent::Controller();
}

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

}

还有一个观点:

<?php
    echo anchor(current_url(), 'This Page');
?>

当我导航到http://localhost/ci/test.html时,它工作正常,但当我点击我的视图中由anchor()函数自动生成的链接时,它会转到http://localhost/ci/index.php/test.html

如何从anchor()函数生成的url中删除/index.php/?

当我指向主页时

本地主机/ CI / index.html中

它向我显示404页面未找到错误,但是当我指向

本地主机/ CI / index.php的

它工作正常。为什么主页没有转换为index.html而不是index.php?

1 个答案:

答案 0 :(得分:2)

您必须使用htaccess创建重写条件。 要删除index.php,请将其添加到根文件夹.htaccess文件

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

如果您将测试加载为默认控制器,那么这将是您的基本网址

本地主机/ CI / 要么 本地主机/ CI /测试/ 要么 本地主机/ CI /测试/ index.html中

确保将config.php设置为此

$config['index_page'] = ''

您还应该使用Codeigniter 2.1来获得正确的php 5支持。

如果使用php 5,你的构造函数应该是这样的。否则坚持使用php 4。

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