我在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错误。
我有一种感觉,我错过了一些非常简单的东西,这让我很烦恼。任何帮助将不胜感激。
答案 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
。