首页 > 后端开发 > 正文

框架中的路由机制php php如何实现url路由分发功能

2023-09-30 11:46:47 | 我爱编程网

今天我爱编程网小编为大家带来了框架中的路由机制php php如何实现url路由分发功能,希望能帮助到大家,一起来看看吧!

框架中的路由机制php php如何实现url路由分发功能

php如何实现页面路由转发


php实现页面路由转发的方法:首先配置nginx服务器,在【.htaccess】中写上nginx的语法;然后打开根目录的【index.php】,编写文件路由即可。
php实现页面路由转发的方法:
1、配置nginx服务器
nginx服务器不会自动读取.htaccess,也不支持.htaccess语法,这里需要做一个投机取巧的方法:在.htaccess中写上nginx的语法,同时把该文件引入到nginx的配置中。这样就达到了和apache同样的目的。编辑.htaccess文件,输入以下内容并保存
if (!-e $request_filename){
rewrite ^(.*)$ /index.php;
}
location ~ /.ht {
deny all;
}【解释】nginx匹配失败的uri全都转给index.php,同时禁止访问.htaccess文件
最重要的一步:在nginx配置中,在server{}内加入一句话:
include E:/demo/.htaccess;【解释】将该文件原封不动的引入到nginx配置中。注意使用绝对路径!
2、编写index.php路由
打开根目录的index.php,输入以下内容
<?php
//路由
$uri = $_SERVER['REQUEST_URI']; //获取uri,例如 ,其uri="/study"
switch($uri){
case "/": include "template/home.php"; break;
case "/study": include "template/study.php"; break;
case "/play": include "template/play.php"; break;
}
编写/template/下的网页文件
/template/下存放的网页文件,随便编辑点html用于测试。例如 home.php
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>这里是home</title>
</head>
<body>
<h1>你好,这里是home页面</h1>
</body>
</html>效果
在浏览器访问 可以访问到/template/home.php
在浏览器访问 可以访问到/template/study.php
在浏览器访问 可以访问到/template/play.php
相关免费学习推荐:php编程(视频)

框架中的路由机制php php如何实现url路由分发功能

php如何实现url路由分发功能


php实现url路由分发功能的方法:首先要在服务器的配置上对【/router/】路径进行拦截;然后实现路由分发器,并获取请求的uri;最后进行模块的编写。
【相关学习推荐:php图文教程】
php实现url路由分发功能的方法:
第一步,首先要在服务器的配置上对/router/路径进行拦截
调用某个文件夹目录下的index.php页面,假定现在所有模块使用单独的文件存放于class目录下,该目录与router平级,如下图所示:
第二步,路由分发器的实现(index.php)
<!Doctype html>
<html>
<head>
<title>路由测试~~</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
<body>
<?php
date_default_timezone_set("Asia/Shanghai");
define("MODULE_DIR", "../class/");
$_DocumentPath = $_SERVER['DOCUMENT_ROOT'];
$_FilePath = __FILE__;
$_RequestUri = $_SERVER['REQUEST_URI'];
$_AppPath = str_replace($_DocumentPath, '', $_FilePath); //==>
outerindex.php
$_UrlPath = $_RequestUri; //==>/router/hello/router/a/b/c/d/abc/index.html?id=3&url=http:
$_AppPathArr = explode(DIRECTORY_SEPARATOR, $_AppPath);

/**
* ;url=http:
*
* /hello/router/a/b/c/d/abc/index.html?id=3&url=http:
*/
for ($i = 0; $i < count($_AppPathArr); $i++) {
$p = $_AppPathArr[$i];
if ($p) {
$_UrlPath = preg_replace('/^/'.$p.'//', '/', $_UrlPath, 1);
}
}

$_UrlPath = preg_replace('/^//', '', $_UrlPath, 1);

$_AppPathArr = explode("/", $_UrlPath);
$_AppPathArr_Count = count($_AppPathArr);

$arr_url = array(
'controller' => 'index',
'method' => 'index',
'parms' => array()
);

$arr_url['controller'] = $_AppPathArr[0];
$arr_url['method'] = $_AppPathArr[1];

if ($_AppPathArr_Count > 2 and $_AppPathArr_Count % 2 != 0) {
die('参数错误');
} else {
for ($i = 2; $i < $_AppPathArr_Count; $i += 2) {
$arr_temp_hash = array(strtolower($_AppPathArr[$i])=>$_AppPathArr[$i + 1]);
$arr_url['parms'] = array_merge($arr_url['parms'], $arr_temp_hash);
}
}

$module_name = $arr_url['controller'];
$module_file = MODULE_DIR.$module_name.'.class.php';
$method_name = $arr_url['method'];

if (file_exists($module_file)) {
include $module_file;

$obj_module = new $module_name();

if (!method_exists($obj_module, $method_name)) {
die("要调用的方法不存在");
} else {
if (is_callable(array($obj_module, $method_name))) {
$obj_module -> $method_name($module_name, $arr_url['parms']);

$obj_module -> printResult();
}
}

} else {
die("定义的模块不存在");
}

?>

</body>
</html>获取请求的uri,然后拿到要加载的模块名、调用方法名,对uri参数进行简单的判断..
第三步,模块的编写
根据上述的uri,我们要调用的是Hello模块下的router方法,那么可以在class目录下定义一个名为Hello.class.php的文件(注意linux下是区分大小写的)
<?php
class Hello {
private $_name;
private $_varValue;

function __construct() {

}

function router() {
$this->_name = func_get_arg(0);
$this->_varValue = func_get_arg(1);
}
function printResult() {
echo $this->_name;
echo "<p>";
echo var_dump($this->_varValue);
echo "</p>";
}
}
?>同理,我们可以编写Ha模块..

这算是实现了很简单的url路由分发功能了?
相关学习推荐:php编程(视频)

框架中的路由机制php php如何实现url路由分发功能

ThinkPHP5静态地址路由和动态路由的区别?

静态路由:指的是路由是固定的,是在配置文件里面固定好的。
动态路由:路由带有参数或者使用正则表达式进行匹配。
两者都是在配置文件中进行设置,最大的区别就是静态路由是固定的,一条路由规则匹配一条url,而动态路由就是一条路由匹配多多条url,简单来说。静态路由是一对一,动态路由是一对多。 我爱编程网

以上就是我爱编程网整理的框架中的路由机制php php如何实现url路由分发功能相关内容,想要了解更多信息,敬请查阅我爱编程网。
与“框架中的路由机制php php如何实现url路由分发功能”相关推荐
php框架中uri路由机制 php如何实现页面路由转发
php框架中uri路由机制 php如何实现页面路由转发

php如何实现页面路由转发php实现页面路由转发的方法:首先配置nginx服务器,在【.htaccess】中写上nginx的语法;然后打开根目录的【index.php】,编写文件路由即可。php实现页面路由转发的方法:1、配置nginx服务器nginx服务器不会自动读取.htaccess,也不支持.htaccess语法,这里需要做一个投机取巧的方法:在.htaccess中写上n

2023-09-26 06:44:45
php框架的路由机制 php如何实现页面路由转发
php框架的路由机制 php如何实现页面路由转发

php为什么要使用路由器电脑为什么用路由器才能上网首先要明白电脑并非一定要使用路由器上网:1、如果你的网络是运营商给的固定IP。那就右键网络--属性--本地连接--属性--双击ipv4,直接填上运营商给你的IP,网关,及DNS,这样就可以上网了。2、如果你的网络是运营商给的登陆账号和密码。那就右键网络--属性--设置新的连接和网络--连接到Internet--宽带

2023-09-23 16:06:33
php框架路由实现的 php如何实现页面路由转发
php框架路由实现的 php如何实现页面路由转发

什么PHP框架可以自定义路由,我要用POST请求来做路由,并且路由的key可以自己定义可以自定义路由的框架太多了,以下从框架的可用性等来介绍:Laravel框架:合框架的大成,是一个全栈框架,包含:MVC,缓存,队列,定时任务等等。Slim:一个微型的框架,如果是简单的App后端服务,可以使用。ThinkPHP5.0版本:中文文档十分丰富,使

2023-09-24 06:53:09
php框架的路由 php如何实现页面路由转发
php框架的路由 php如何实现页面路由转发

php如何实现页面路由转发php实现页面路由转发的方法:首先配置nginx服务器,在【.htaccess】中写上nginx的语法;然后打开根目录的【index.php】,编写文件路由即可。php实现页面路由转发的方法:1、配置nginx服务器nginx服务器不会自动读取.htaccess,也不支持.htaccess语法,这里需要做一个投机取巧的方法:在.htaccess中写上n

2023-09-07 09:02:20
php框架路由器 php如何实现页面路由转发
php框架路由器 php如何实现页面路由转发

配置php环境需要路由器吗?你本机测试要路由器干嘛,,如果是局域网测试当然要路由器或者是集线器之类的组成局域网。。如果你打算把你的PHP环境影射到外网,那当然需要一个已经能上网的路由,而且可以设置端口影射的路由器。如果只是本机测试,那就什么都不用,就需要一台电脑,配置好环境,环境可以是IIS+PHP,,,,APACHE+PHP等方式,建议用PHPSTUDY,WMAP之类的套

2023-09-22 20:57:37
Php框架路由规则 Phpcms如何自定义URL路由规则
Php框架路由规则 Phpcms如何自定义URL路由规则

php框架搭建方法?php框架搭建步骤:1.项目初始化首先我们在自己的web目录下创建我们的项目目录,我暂且把项目命名为hellovod,因此我的电脑目录就是:D:laragonwwwhellovod。在该目录下创建composer.json文件。2.添加入口文件初始化完毕后,我们来配置入口文件。在hellovod目录下新建一个public文件夹,并在该文件夹下创建

2023-09-06 21:38:06
php框架路由无效 thinkphp URL路由 部分字符不能识别是为什么?
php框架路由无效 thinkphp URL路由 部分字符不能识别是为什么?

PHPCMS换到nginx环境下后配置的url路由不生效,apache环境下访问正常。服务器方面,如果你自己设定了url伪静态规则,请在nginx中重新配置你的伪静态规则。因为两个服务器的配置方法不一样,在apache下可用在nginx下就不一定可用。另外,phpcms系统方面,请确保在后头修改url规则后已在后台-内容-更新url地址栏目下更新了所有页面的url规则,否则也可能还是使用

2023-09-12 10:25:41
php框架中的路由分发 ThinkPHP的几种路由形式总结
php框架中的路由分发 ThinkPHP的几种路由形式总结

ThinkPHP的几种路由形式总结本篇文章总结了ThinkPHP的几种路由形式,分别是普通模式、PATHINFO、REWRITE和兼容模式,希望对各位学习thinkphp的朋友有帮助!thinkphp官方文档里有详细的说明:ThinkPHP支持的URL模式有四种:普通模式、PATHINFO、REWRITE和兼容模式,可以设置URL_MODEL参数改变URL模式。(推荐教程:

2023-09-30 04:48:53