【问题标题】:.htaccess not acting as suspected.htaccess 没有被怀疑
【发布时间】:2012-04-18 16:46:45
【问题描述】:

我在 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 错误。

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

【问题讨论】:

  • 尝试使用 ?$1 而不是 /$1
  • 不,没有这样做。我尝试 URL 的两种方式结果相同。
  • 你重启服务器了吗?
  • 激活rewrite_module后?我重新启动了 WAMP,但没有重新启动我的计算机。觉得我应该试试?
  • 你只需要重启wamp

标签: php .htaccess codeigniter mod-rewrite


【解决方案1】:

这是一个更新的 .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]

然后我的所有资产都在 public 文件夹中,我不需要继续向我的 htaccess 文件添加例外。

【讨论】:

  • 那也没用。我仍然收到Not Found 错误。
  • 您是否将 Codeigniter 放入文件夹? wamp/www/somefolder/ 例如?
  • 另外,我刚刚注意到您说 .htaccess 文件位于应用程序文件夹中,它位于该文件夹之上。
  • 是的。我的目录是 C:\wamp\www\forum\... 在论坛里面是应用程序、系统和 CSS 文件夹。我的 .htaccess 位于 C:\wamp\www\forum\application\.htaccess。
  • 将 .htaccess 文件移动到论坛文件夹,而不是应用程序文件夹。我确定我以前做过:-)
【解决方案2】:

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

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

另外,请在config.php 中查看您的uri_protocol。将其设置为 PATH_INFO 而不是 AUTO,我非常幸运。

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

【讨论】:

    猜你喜欢
    • 2012-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-18
    • 2018-10-04
    • 2017-10-01
    • 2016-09-06
    • 2011-10-01
    相关资源
    最近更新 更多