我是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?
答案 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();
}