我为在CodeIgniter网址中删除 index.php 的另一个问题道歉。我在这里看了很多答案,但一直无法解决我的问题。
目前我已经设置了本地开发服务器,以便
http://localhost/project/index.php/controller/function/page
和http://localhost/project/page
按预期加载页面。
但是,如果我尝试加载page/subpage
只有index.php
的版本有效:
http://localhost/project/index.php/controller/function/page/subpage
(作品)http://localhost/project/page/subpage
(没有工作)第二个不会调用我的控制器,但会产生CodeIgniter 404错误页面。这让我怀疑问题出在我的.htaccess
文件中,但我不知道。我不太了解.htaccess
文件。
我的.htaccess
文件包含
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]enter code here
我尝试过各种各样的排列,人们已经在其他类似的问题上提出了建议,但没有任何效果,除了一个产生通用php 404页面而不是CodeIgniter的页面。
我可以采取哪些不同方式来加载http://localhost/project/page/subpage
?
我的routes.php
文件包含:
$route['default_controller'] = 'Controller';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;
$route['(:any)'] = 'controller/index/$1';
我的config.php
文件包含:
$config['index_page'] = '';
$config['uri_protocol'] = 'REQUEST_URI';
是否还有其他有助于我发布的设置?
答案 0 :(得分:0)
使用此.htaccess
RewriteEngine on
RewriteCond $1 !^(index\.php|assets|image|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]
答案 1 :(得分:0)
我找到的解决方案是将以下路由添加到config.php
文件中:
$route['(:any)/(:any)'] = 'controller/index/$1/$2';
这看起来很麻烦,但它解决了我的问题。我不知道我是否只为未来创造了一个问题。