Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用Codeigniter控制器加载页面?_Php_Codeigniter_Url_Url Rewriting - Fatal编程技术网

Php 如何使用Codeigniter控制器加载页面?

Php 如何使用Codeigniter控制器加载页面?,php,codeigniter,url,url-rewriting,Php,Codeigniter,Url,Url Rewriting,我用CodeIgniter制作了一种CMS。它根据URL参数中传递的slug文本(如about、services、contact)从数据库加载页面内容 在控制器代码中,我重新映射了index方法,将slug作为参数,作为默认的index方法不允许参数。 在下面的链接上检查my页面控制器的代码: 其工作方式是,我已将page控制器设置为默认加载。所以每次我像这样打开我的网站 它像这样加载控制器 如果我们将slug传递给它,它将从数据库加载该slug的页面内容,如下所示 http://www

我用CodeIgniter制作了一种CMS。它根据URL参数中传递的
slug
文本(如about、services、contact)从数据库加载页面内容

在控制器代码中,我重新映射了index方法,将slug作为参数,作为默认的index方法不允许参数。 在下面的链接上检查my
页面
控制器的代码:

其工作方式是,我已将
page
控制器设置为默认加载。所以每次我像这样打开我的网站

它像这样加载控制器

如果我们将slug传递给它,它将从数据库加载该slug的页面内容,如下所示

http://www.mysite.com/page/portfolio

如果我们没有通过slug,它就会加载主页

现在我想做的是,我不希望这个“页面”文本出现在URL中。所以页面应该像这样打开

我想这将是可能的通过URL重写。 我已经完成了URL重写,以便从URL中删除
index.php
,这通常适用于所有Codeigniter网站。下面是我的.htaccess文件的代码

RewriteEngine on

RewriteCond $1 !^(index\.php|uploads|fckeditor|assets|robots\.txt)

RewriteRule ^(.*)$ /jobsite/index.php/$1 [L]
现在的问题是,我如何使URL像这样工作


提前感谢。

只需将此添加到您的config/routes.php文件中:

$route[':any'] = 'your_controller';
然后在*your_controller*中,您可以通过以下方式访问URI段:

$this->uri->segment(1);

一旦有了URI段,就可以在DB中查询它,并将数据发送到视图中。如果URI段为空,请加载主页。

只需将其添加到config/routes.php文件:

$route[':any'] = 'your_controller';
然后在*your_controller*中,您可以通过以下方式访问URI段:

$this->uri->segment(1);

一旦有了URI段,就可以在DB中查询它,并将数据发送到视图中。如果URI段为空,请加载主页。

好的,那么我要做的就是yRosen的建议,有一点不同,并且按照正确的顺序提到:

首先是您的管理员控制器,然后是其他一切:

$route['admin_panel/user_manager/(:any)'] = "admin_panel/user_manager/$1";
$route['admin_panel/pages_manager/(:any)'] = "admin_panel/pages_manager/$1";
$route['admin_panel'] = "admin_panel";

$route['(:any)'] = "pages/$1";
我在制作复杂站点或使用URL过多时通常考虑的另一个问题是把管理放在单独的主机上。
您为公共端保留了“www.myhost.com”,并使用“admin.myhost.com”作为管理部分。当然,它需要2个CI安装和一点模型复制,但它可以节省时间并提高安全性。

好的,所以我要做的是yRosen建议的,有一点不同,并且按照正确的顺序提到:

首先是您的管理员控制器,然后是其他一切:

$route['admin_panel/user_manager/(:any)'] = "admin_panel/user_manager/$1";
$route['admin_panel/pages_manager/(:any)'] = "admin_panel/pages_manager/$1";
$route['admin_panel'] = "admin_panel";

$route['(:any)'] = "pages/$1";
我在制作复杂站点或使用URL过多时通常考虑的另一个问题是把管理放在单独的主机上。
您为公共端保留了“www.myhost.com”,并使用“admin.myhost.com”作为管理部分。当然,它需要2个CI安装和一点模型复制,但它可以节省时间并提高安全性。

gr8,这很有效。如何为某些控制器(如/admin_panel、/order_manager等)添加例外情况@aslamdoctor,来自CI文档:“路由将按其定义的顺序运行。较高的路由将始终优先于较低的路由。”如果有效,是否接受它作为正确答案?:)当然,这是可以接受的。但是如果你能帮我解决这个管理面板的问题,我会很感激的:)只需添加如下内容:
$route['admin\u panel']='admin\u panel\u controller'在:我答案中的任何一行之前。如果您有少量页面需要由同一控制器处理,您可能希望用简单的正则表达式替换:any:
$route['about | contact | services']='your|u controller'gr8,它起作用了,但现在管理面板的子页面,如“管理面板/用户管理器”和“管理面板/页面管理器”出现了问题:(对不起,朋友,但我真的需要解决此问题。我如何才能为一些控制器添加例外,如/admin面板,/order\u manager等。@aslamdoctor来自CI文档:“路由将按其定义的顺序运行。较高的路由将始终优先于较低的路由。”如果它起作用,是否接受它作为正确答案?:)当然,它被接受。但是如果您能帮助我解决此管理面板问题,将不胜感激:)只需添加类似以下内容:
$route['admin\u panel']='admin_panel_controller'
在我的答案中的:any行之前。如果您有少量页面应该由同一个控制器处理,您可能希望用一个简单的正则表达式替换:any:
$route['about | contact | services']='your_controller'
gr8,它可以工作,但现在管理面板的子页面类似于““管理员面板/用户管理器”和“管理员面板/页面管理器”出现问题:(对不起,朋友,但我真的需要解决这个问题