6

我的项目结构如下

/system
/applications
  /cache
  /core
  /helpers
  /hook
  /language
  /libraries
  /logs
  /third_party
  /admin-panel
     /config
     /controllers
        welcome.php
        dashboard.php
     /errors
     /models
     /views
        welcome.php
        dashboard.php
  /user-panel
     /config
     /controllers
            welcome.php
            dashboard.php
     /errors
     /models
     /views
        welcome.php
        dashboard.php
/admin
  index.php
index.php

我的项目文件夹中的 index.php 将 user-panel 作为我的应用程序文件夹,而 admin 文件夹中的 index.php 将 admin-panel 作为我的应用程序文件夹。

我已经插入了这一行 $route['default_controller'] = "welcome"; $route['欢迎'] = '欢迎'; 在用户面板和管理面板内的 routes.php 中

我可以通过使用访问我的用户面板和管理面板的欢迎控制器http://localhost/myproject and http://localhost/myproject/admin

但我无法通过使用访问我的仪表板控制器http://localhost/myproject/dashboard or http://localhost/myproject/admin/dashboard

我的仪表板控制器可以通过使用访问http://localhost/myproject/index.php/dashboard or http://localhost/myproject/admin/index.php/dashboard

但我不希望 index.php 包含在我的网址中。我想删除它。我也尝试过在我的管理文件夹中使用 .htaccess 。我在此写下一行

RewriteEngine On
RewriteCond $1 !^(index\.php|(.*)\.swf|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]

但这对我不起作用。它给出 404 not found CI 错误。我还通过在 httpd.conf 中将 AllowOerride None 更改为 AllowOverride All 来启用 mod_rewrite。请告诉我我应该怎么做才能删除 index.php 以及我应该将我的 .htaccess 文件放在我的项目目录中的什么位置。

4

4 回答 4

10

如果您的项目根文件夹不是域的根目录,即您的网站是域的子目录,http://localhost/myproject那么您需要在 .htaccess 文件中添加一行RewriteBase

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

还要确保您的 config.php 配置为

$config['base_url'] = 'http://localhost/myproject/';
$config['index_page'] = '';

并且在 apache 的配置文件中启用了 mod_rewrite。

于 2012-08-14T07:20:42.647 回答
2

从 system/application/config 目录打开 config.php

并更换

$config['index_page'] = “index.php” by $config['index_page'] = “”</p>

在 CodeIgniter 目录的根目录下创建一个“.htaccess”文件

并添加以下行。

    RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA] 

在某些情况下,uri_protocol 的默认设置无法正常工作。

要解决这个问题,只需更换

`$config['uri_protocol'] = “AUTO”` 

经过

 $config['uri_protocol'] = “REQUEST_URI” 

从系统/应用程序/config/config.php

于 2012-08-14T08:36:02.343 回答
1

请确保以下几点:

  1. .htaccess 需要放在与 index.php 文件相同的目录中,通常是应用程序的根目录。
  2. 阅读有关 codeigniter 和 .htaccess 的手册
  3. 确保 apache 正在运行名为:rewrite_module的重写模块,您可以在此处阅读有关在 linux 上启用该模块的更多信息:博客文章或此处的 wamp:Wamp 图标 -> Apache -> Apache 模块 -> rewrite_module
于 2012-08-14T07:10:45.330 回答
0

查看 config.php 文件,有一个变量名为'index_page'

尝试改变

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

$config['index_page'] = "";
于 2012-08-14T07:10:56.613 回答