2

我正在开发一个基于 Ubuntu & Apache2 & CodeIgniter 的应用程序

我有一个Site这样命名的控制器

class Site extends CI_Controller {
    public function view($page = 'home')
    {
        $this->load->view('site/'.$page, $data);
    }
}

application/views/site我有home.php&about.php

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

我已经

  1. 确保mod_rewrite打开并AllowOverride All在 apache2 配置文件中。
  2. $config['index_page'] = '';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>  
4

3 回答 3

0

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

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

和你的几乎一模一样

于 2012-10-26T18:42:16.343 回答
0

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

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

于 2012-10-27T06:13:32.193 回答
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>
于 2012-10-27T11:24:34.780 回答