1

我在 Windows 7 机器上使用 CI 和 WAMP。在我的站点的应用程序文件夹中,我有一个.htaccess包含以下内容的文件:

RewriteEngine on
RewriteCond $1 !^(index\.php)
RewriteRule ^(.*)$ /index.php/$1 [L]

这是复制和修改CodeIgniter User Guide。我确保 rewrite_module(以前不是 mod_rewrite 吗?)处于活动状态并重新启动了 WAMP。在我的控制器中,我有以下内容:

<?php

class Forum extends CI_Controller
{
public function index()
{
    $data['title'] = "Card Forums";
    $this->load->view('Header', $data);
    $this->load->model('forumdb');
    $data['sections'] = $this->forumdb->getSections();
    $this->load->view('Home', $data);
    $this->load->view('Footer');
}

public function site()
{
    $data['title'] = "Card Forums - Site";
    $this->load->view('Header', $data);
    $data['section'] = "Site";
    $this->load->view('Forum', $data);
    $this->load->view('Footer');
}
}

当我去localhost/forum它时,它完全按照我的意愿去做。但是当我尝试去localhost/forum/site它时显示以下内容:


未找到

在此服务器上找不到请求的 URL /forum/site。


Forum我看来:

<?php echo $section; ?>

现在只应该显示变量,因为我想确保我首先访问该页面(周五才开始编写此站点)。当我尝试localhost/forum/index.php/site时,它给了我一个 404 错误。

我有一种感觉,我在这里遗漏了一些非常简单的东西,这让我很烦恼。任何帮助,将不胜感激。

4

2 回答 2

2

这是一个更新的 .htaccess 文件

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

在您的 /forum/config 文件夹中找到 config.php 并更改此行

$config['index_page'] = 'index.php';

$config['index_page'] = '';

然后正如您提到的,您可以使用类似的功能base_url('css/site.css');

我通常对这种类型的 htaccess 文件做的一件事是为一个名为 public 的文件夹添加一个条目,所以在我的情况下它看起来像这样。

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

然后我的所有资产都在公共文件夹中,我不需要继续向我的 htaccess 文件添加异常。

于 2012-04-18T16:55:01.833 回答
1

对于 WAMP(以及我的 CI 项目的大多数其他环境),我最幸运的是在以下附加标志.htaccess

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [NC,L,QSA]

另外,检查您uri_protocolconfig.php. 我很幸运将其设置为PATH_INFO而不是AUTO.

最后一件事要尝试:CI 有时会base_url在 WAMP 环境中检测到错误。要么定义你的base_urlin config.php

于 2012-04-18T17:10:53.557 回答