4

我是codeigniter的新手。我在 localhost/path/learn_ci 安装了我的 codeigniter。

我已按照 codeigniter wiki 中给出的所有步骤进行操作。这是我的 .htaccess 文件。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /learn_ci/index.php/$1 [L]
</IfModule>

<IfModule !mod_rewrite.c>
ErrorDocument 404 /index.php
</IfModule>

我还根据需要更改了配置文件。但是当我尝试访问

我收到这个错误

“在此服务器上找不到请求的 URL /learn_ci/index.php/welcome”

我已经仔细检查了... Apache 中的 mod_rewrite 模块已打开。

RewriteBase 解决方案也不起作用。难道我做错了什么??

4

6 回答 6

2

正如其他人所说,确保在您的 apache 配置或虚拟主机文件中将 AllowOverride 设置为 All。鉴于您设置了 codeigniter 的路径,您的 htaccess 应该如下所示:

RewriteEngine On
RewriteBase /path/learn_ci

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /path/learn_ci/index.php/$1 [L]

另外,请记住,您正在使用的任何资产(img、css、js 等)都是通过base_url()函数或使用相对路径引用的。您项目的根目录将是 /path/learn_ci。

我发现创建虚拟主机并在本地向我的主机文件添加一个条目更容易。这更好地模仿了现实生活。

于 2012-06-12T11:03:44.823 回答
1

尝试:

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]  
于 2012-06-12T07:58:44.033 回答
1

您可以执行以下操作:

首先在 config.php 文件集中

$config['index_page'] = '';

接下来,在 codeigniter 根文件夹中创建一个 .htaccess 文件并添加以下内容:

RewriteEngine on
RewriteCond $1 !^(index\.php|public|\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1

保存文件。它应该工作。

于 2013-09-27T19:58:39.057 回答
0

您将 htaccess 文件放在与 index.php 相同的目录中的根 public_html 文件夹中

然后从您的 htaccess 文件中删除 /learn_ci,只需将其设为 /index.php/$1

于 2012-06-12T07:56:39.173 回答
0

检查你的 apache 配置,它应该是这样的:

Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
allow from all
于 2012-06-12T09:42:49.607 回答
0

我想添加我的答案。我的项目基本网址是http://localhost/newproject/ 我在 newproject 文件夹中包含 htacess 文件。

这是代码。

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php/$1 [L,QSA]

然后我更改配置文件。

$config['index_page'] = '';
$config['uri_protocol'] = 'REQUEST_URI';

一切都开始起作用了。现在不再有 index.php 文件。

于 2012-12-19T06:46:09.060 回答