如何仅使用文件夹名称访问控制器,控制器中存在文件夹。 文件夹名称是控制器文件夹中的admin。控制器是管理文件夹中的仪表板(php文件)。
$route['admin/(:any)'] = 'admin/dashboard';
htaccess的
RewriteEngine on
RewriteCond $1 !^(index\.php|(.*)\.swf|forums|images|css|downloads|jquery|js|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php?$1 [L,QSA]
我想使用:http://Website/admin访问仪表板(php文件)。但不工作。我thnik,我有上述路线问题。
工作路线
$route['(:any)'] = "admin/dashboard";
使用$route['(:any)']
页面可以访问:http://Website/any-string-or-letter。但是如何仅使用http://Website/admin进行访问。
答案 0 :(得分:1)
请按照以下步骤执行此操作:
application/controllers/admin
application/controllers/admin/dashboard
Dashboard.php
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Dashboard extends CI_Controller {
/**
* Index Page for this controller.
*
*/
public function index()
{
$this->load->view('my-view');
//$this->load->view('admin/my-view'); //If you are saving the views in a sub directory under views/admin/my-view.php
}
}
在my-view.php
application/controllers/views/my-view.php
<h5>MY VIEW FILE CONTENT</h5>
像这样访问这个控制器:如果你在localhost上,那就像:http://localhost/my-project/admin/dashboard/index
.htaccess
文件和naming conventions for CodeIgniter 3。 的.htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /my-project
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|images|robots\.txt|css|docs|js|system)
RewriteRule ^(.*?)$ /my-project/index.php?/$1 [L]
</IfModule>
routes.php文件
$route['admin'] = 'admin/dashboard/index';
*请尝试删除/评论除此之外的所有其他路线以避免冲突
答案 1 :(得分:0)
你现在可能遇到的问题是CodeIgniter期待代替(:any)的东西,所以当你试图去/ admin它失败,因为没有Admin.php控制器,你没有第二个URI段。试试这个:
$route['admin/(.+)'] = function ($x = NULL)
{
return 'admin/dashboard';
};
可能需要考虑的另一件事是CI用户指南中有关子目录中控制器的说明,以及您可能有一个默认控制器:
每个子目录都可能包含一个默认控制器,如果URL只包含子目录,则会调用该控制器。只需在其中放置一个与application / config / routes.php文件中指定的'default_controller'名称相匹配的控制器。
这意味着如果你查看config / routes.php,如果你的default_controller是&#34; welcome&#34;,那么你也可以拥有一个名为application / controllers / admin / Welcome.php的控制器,如果没有其他匹配的控制器,则路由到/ admin的请求将会到达那里。
我认为这不是理想的。如果是我,我会在应用程序组织的方式中找出其他的东西。