使用CodeIgniter删除url中的index.php

时间:2012-10-26 18:02:13

标签: php apache codeigniter

我正在开发一个基于Ubuntu& amp;的应用程序。 Apache2&笨

我有一个名为Site的控制器

class Site extends CI_Controller {
    public function view($page = 'home')
    {
        $this->load->view('site/'.$page, $data);
    }
}
<{1>} application/views/site我有home.php&amp; about.php

localhost/index.php/about效果很好 但是localhost/about得到了 Not Found,The requested URL /about was not found on this server.

我已经

  1. 确保在{apache2配置文件中打开mod_rewriteAllowOverride All
  2. $config['index_page'] = '';
  3. application/config/config.php

    我还设置了路线

    $route['default_controller'] = "site/view";  
    $route['404_override'] = '';   
    $route['(:any)'] = "site/view/$1";
    

    这是我的.htaccess

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

3 个答案:

答案 0 :(得分:0)

这是我正在使用的.htaccess(在你身上,但应该是可以互换的):

RewriteEngine on
# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# otherwise forward it to index.php
RewriteRule . index.php

几乎与你的相同

答案 1 :(得分:0)

尝试按照此页面关于codeignitor pretty urls。你的规则看起来是正确的,但我对正则表达式很糟糕。

要研究的一些事情是使用phpinfo();检查mod_rewrite是否可用。此链接中的第三步也讨论了使用a2enmod启用mod_rewrite。并确保重新启动Apache。

答案 2 :(得分:0)

来自我的codeigniter网站。

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