我有以下项目结构
/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 ['welcome'] ='welcome'; 在users.php中,在user-panel和admin-panel
中我可以使用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未找到的CI错误。我还通过在httpd.conf中将AllowOerride None更改为AllowOverride All来启用mod_rewrite。请告诉我如何删除index.php以及我应该将.htaccess文件放在项目目录中的哪个位置。
答案 0 :(得分: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。
答案 1 :(得分:2)
从system / application / config目录打开config.php
并替换
$ config ['index_page'] =“index.php”by $ config ['index_page'] =“”
在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”
from system / application / config / config.php
答案 2 :(得分:1)
请确保以下事项:
答案 3 :(得分:0)
查看config.php文件,有一个名为'index_page'
尝试更改
$config['index_page'] = "index.php";
到
$config['index_page'] = "";