.htaccess没有被怀疑

时间:2012-04-18 16:46:46

标签: php .htaccess codeigniter mod-rewrite

我在Windows 7计算机上使用CI和WAMP。在我的网站的Application文件夹中,我有一个.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时,它显示以下内容:


未找到

在此服务器上找不到请求的网址/论坛/网站。


Forum视图中,我有:

<?php echo $section; ?>

现在只应该显示变量,因为我想确保我首先访问该页面(刚开始在星期五写这个网站)。当我尝试localhost/forum/index.php/site时,它会给我404错误。

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

2 个答案:

答案 0 :(得分: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]

然后我将所有的assests都放在公共文件夹中,而且我不需要继续向我的htaccess文件添加例外。

答案 1 :(得分:1)

对于WAMP(以及我的CI项目的大多数其他环境),我对.htaccess中的以下附加标志感到非常幸运:

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

另外,请检查uri_protocol中的config.php。我把它设置为PATH_INFO而非AUTO非常幸运。

最后一件事:CI有时会在WAMP环境中检测到base_url错误。在base_url中定义config.php