将(一些)请求从WordPress目录路由到Codeigniter
我有一个网站:将(一些)请求从WordPress目录路由到Codeigniter,wordpress,.htaccess,codeigniter,routing,Wordpress,.htaccess,Codeigniter,Routing,我有一个网站: mysite.com -> basic wordpress site mysite.com/app -> php codeigniter app mysite.com/app/profile/view/name.surname -> user profile in my codeigniter app 问题是: 我想从以下位置路由请求: mysite.com/name.surname …转到我的codeigniter应用程序上的“name.nam姓氏”用户配
mysite.com -> basic wordpress site
mysite.com/app -> php codeigniter app
mysite.com/app/profile/view/name.surname -> user profile in my codeigniter app
问题是:
我想从以下位置路由请求:
mysite.com/name.surname
…转到我的codeigniter应用程序上的“name.nam姓氏”用户配置文件:
mysite.com/app/profile/view/name.surname
url slug中的每个“配置文件”标识符都至少包含一个类似于facebook上的点(.)的配置文件。因此,如果任何给定的slug包含一个(.),那么我肯定知道它是一个用户配置文件
实现这种行为的最佳方式是什么
您可以通过设置带有回调的路由来实现这一点,假设profile是您的控制器并查看您的方法:
$route['(:any)']=function ($user){
$user=explode('.',$user);
if(array_key_exists(1,$user)){
// check if array has 2nd element and create route
return "profile/view/$user[0]/$user[1]";
}else{
// route to index function
return "profile/index";
}
};
在控制器配置文件的功能视图中,您可以获得如下名称和姓氏:
function view($n, $sn){
echo "name= $n; surname= $sn";
}
关于您可以通过设置带有回调的路由来实现这一点,假设profile是您的控制器并查看您的方法:
$route['(:any)']=function ($user){
$user=explode('.',$user);
if(array_key_exists(1,$user)){
// check if array has 2nd element and create route
return "profile/view/$user[0]/$user[1]";
}else{
// route to index function
return "profile/index";
}
};
在控制器配置文件的功能视图中,您可以获得如下名称和姓氏:
function view($n, $sn){
echo "name= $n; surname= $sn";
}
关于我知道您的问题指定了.htaccess,但这可能会对您有所帮助。包括一个index.php文件,如下所示:
<?php
$uri_path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$uri_segments = explode('/', $uri_path);
if(strpos($uri_segments[0],'.')===false){
include 'wordpress_index.php';
}else{
include 'codeigniter_index.php';
}
我知道您的问题指定了.htaccess,但这可能会对您有所帮助。包括一个index.php文件,如下所示:
<?php
$uri_path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$uri_segments = explode('/', $uri_path);
if(strpos($uri_segments[0],'.')===false){
include 'wordpress_index.php';
}else{
include 'codeigniter_index.php';
}
几年前,我写了一个类似的小库。也许对你有帮助。我给你留个链接:嗨,阿方索,档案是直接在Codeigniter应用程序中创建的。WordPress只对我们的“公司网站”有用,它与用户档案无关。几年前,我写了一个类似的库。也许对你有帮助。我给你留个链接:嗨,阿方索,档案是直接在Codeigniter应用程序中创建的。WordPress只对我们的“公司网站”有用,它与用户档案无关。/app不是控制器/app是我托管codeigniter应用程序的目录。我在第一篇文章中上传了一个更好的示例图片:)-app-wp content-wp admin-etc…默认控制器是$route['default\u controller']='dashboard/admin\u view';相反,在示例问题中,控制器是“profile”/app不是控制器/app是我托管codeigniter应用程序的目录。我在第一篇文章中上传了一个更好的示例图片:)-app-wp content-wp admin-etc…默认控制器是$route['default\u controller']='dashboard/admin\u view';相反,在示例问题中,控制器是“profile”Hi Alfonso,我必须将$uri_段从0更改为1以使其正常工作(该数组的元素0是一个空白字符串)…但Codeigniter给出了此错误:“您的系统文件夹路径似乎未正确设置。请打开以下文件并更正此错误:index.php”,我如何设置它,使其在任何情况下都有效?(mysite.com/name.lasname以及mysite.com/app/controller/action/)?请尝试以下操作:嗨,阿方索,我必须将$uri_段从0更改为1以使其工作(该数组的元素0是一个空白字符串)…但Codeigniter给出了以下错误:“您的系统文件夹路径似乎设置不正确。请打开以下文件并更正此问题:index.php“,如何设置它,使其在任何情况下都能正常工作?(mysite.com/name.姓氏和mysite.com/app/controller/action/)?请尝试以下方法: