热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

php路由怎么实现

php如何实现下列url格式路由分发:app目录┡┈▓App┊┡┈▓Config配置文件目录┊┡┈▓Controller控制器目录┊┊┡┈▒Index.php默认控制器┊┟┈▓Modle模型目录┊┟┈▓View视图目录┊┟┈▓Modul...
php如何实现下列url格式路由分发:

app目录
┡┈▓ App
┊ ┡┈▓ Config //配置文件目录
┊ ┡┈▓ Controller //控制器目录
┊ ┊ ┡┈▒ Index.php // 默认控制器
┊ ┟┈▓ Modle // 模型目录
┊ ┟┈▓ View // 视图目录
┊ ┟┈▓ Module //模块目录
┊ ┊ ┟┈▓ Admin
┊ ┊ ┊ ┡┈▓ Controller
┊ ┊ ┊ ┊ ┗┈▒ Index.php
┊ ┊ ┊ ┟┈▓ Modle
┊ ┊ ┊ ┗┈▓ View
┊ ┊ ┟┈▓ Member
┊ ┊ ┊ ┡┈▓ Controller
┊ ┊ ┊ ┊ ┗┈▒ Index.php
┊ ┊ ┊ ┟┈▓ Modle
┊ ┊ ┊ ┗┈▓ View

  1. http://www.xxx.com/category/list/order/hot/
    http://www.xxx.com/admin/category/edit/
    http://www.xxx.com/member/user/id/3/

  2. http://www.xxx.com/index.php?c=category&a=list&order=hot
    http://www.xxx.com/index.php?m=admin&c=category&a=edit
    http://www.xxx.com/index.php?m=member&c=user&id=3

第1个url为前端访问,category为控制器,list为category类下的方法
第2个后台,admin为模块名,category为控制器,edit为category类下的方法

现在路由分发要实现以上2种形式的url的,怎样做?

回复内容:

php如何实现下列url格式路由分发:

app目录
┡┈▓ App
┊ ┡┈▓ Config //配置文件目录
┊ ┡┈▓ Controller //控制器目录
┊ ┊ ┡┈▒ Index.php // 默认控制器
┊ ┟┈▓ Modle // 模型目录
┊ ┟┈▓ View // 视图目录
┊ ┟┈▓ Module //模块目录
┊ ┊ ┟┈▓ Admin
┊ ┊ ┊ ┡┈▓ Controller
┊ ┊ ┊ ┊ ┗┈▒ Index.php
┊ ┊ ┊ ┟┈▓ Modle
┊ ┊ ┊ ┗┈▓ View
┊ ┊ ┟┈▓ Member
┊ ┊ ┊ ┡┈▓ Controller
┊ ┊ ┊ ┊ ┗┈▒ Index.php
┊ ┊ ┊ ┟┈▓ Modle
┊ ┊ ┊ ┗┈▓ View

  1. http://www.xxx.com/category/list/order/hot/
    http://www.xxx.com/admin/category/edit/
    http://www.xxx.com/member/user/id/3/

  2. http://www.xxx.com/index.php?c=category&a=list&order=hot
    http://www.xxx.com/index.php?m=admin&c=category&a=edit
    http://www.xxx.com/index.php?m=member&c=user&id=3

第1个url为前端访问,category为控制器,list为category类下的方法
第2个后台,admin为模块名,category为控制器,edit为category类下的方法

现在路由分发要实现以上2种形式的url的,怎样做?

php的路由必须和服务器的伪静态规则配合才能生效。

php里的路由的意思是地址转发,那么可以在生成URL的函数里传入各个参数生成一个新的的地址(而这个地址也就是伪静态地址)

我自己写的路由,希望对你有帮助。http://mengkang.net/17.html

如果你懒得看,说下大体思路:

第一、服务器上apache或者nginx把伪静态rewrite到实际地址
第二、在PHP生成URL地址的时候做url的规则(而这个规则就路由文件)替换
第三、保证用户访问的一定是伪静态地址,当用户访问非伪静态地址的时候PHP端根据$_SERVER['REQUEST_URI']判断其是否非伪静态地址,如果不是就跳转到路由表规定的伪静态地址

希望对楼主有帮助

单一路由规则,将请求url全部转发给index.php处理.
这种是单一入口的,也是最简单。

但一入口 比较通用的路由规则

# GreenCMS Rewrite规则

   RewriteEngine on
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]

推荐一个精简的Router库做路由控制器 https://github.com/lloydzhou/router,可以根据映射的handler自动从request获取变量,支持自定义error handler和hook。可以通过hook方便的定制参数过滤、登录检查等。

(new Router())
->error(405, function($message){
    header('Location: /hello/world', true, 302);
})
->get('/hello/:name', function($name){
    echo "Hello $name !!!";
})
->execute();

如果客户不设置伪静态,默认URL为第2种形式.

如果客户设置使用伪静态,就分别生成Apache和Nginx的rewrite规则,让客户自已复制去配置.
规则可以这样..

#Apache .htaccess
RewriteEngine on 
RewriteBase / 
RewriteCond %{REQUEST_FILENAME} !-f  
RewriteCond %{REQUEST_FILENAME} !-d  
RewriteRule . /index.php [L,QSA]

这样,程序只需按照第2种的形式处理$_SERVER['REQUEST_URI'].程序中的URL根据是否设置伪静态,来动态生成.

所有请求(除静态文件请求和不存在的目录或文件)外,全部转发到index.php。

Dispatcher中先进行自定义Router检测,匹配Router则执行Router绑定操作。未匹配到Router规则,执行常规操作检测并执行。

推荐阅读
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
  • Tomcat安装与配置教程及常见问题解决方法
    本文介绍了Tomcat的安装与配置教程,包括jdk版本的选择、域名解析、war文件的部署和访问、常见问题的解决方法等。其中涉及到的问题包括403问题、数据库连接问题、1130错误、2003错误、Java Runtime版本不兼容问题以及502错误等。最后还提到了项目的前后端连接代码的配置。通过本文的指导,读者可以顺利完成Tomcat的安装与配置,并解决常见的问题。 ... [详细]
  • Linux下部署Symfoy2对app/cache和app/logs目录的权限设置,symfoy2logs
    php教程|php手册xml文件php教程-php手册Linux下部署Symfoy2对appcache和applogs目录的权限设置,symfoy2logs黑色记事本源码,vsco ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • 本文介绍了一些Java开发项目管理工具及其配置教程,包括团队协同工具worktil,版本管理工具GitLab,自动化构建工具Jenkins,项目管理工具Maven和Maven私服Nexus,以及Mybatis的安装和代码自动生成工具。提供了相关链接供读者参考。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 解决php错误信息不显示在浏览器上的方法
    本文介绍了解决php错误信息不显示在浏览器上的方法。作者发现php中的各种错误信息并不显示在浏览器上,而是需要在日志文件中查看。为了解决这个问题,作者提供了一种解决方式:通过修改php.ini文件中的display_errors参数为On,并重启服务。这样就可以在浏览器上直接显示php错误信息了。 ... [详细]
  • Android日历提醒软件开源项目分享及使用教程
    本文介绍了一款名为Android日历提醒软件的开源项目,作者分享了该项目的代码和使用教程,并提供了GitHub项目地址。文章详细介绍了该软件的主界面风格、日程信息的分类查看功能,以及添加日程提醒和查看详情的界面。同时,作者还提醒了读者在使用过程中可能遇到的Android6.0权限问题,并提供了解决方法。 ... [详细]
  • 本文总结了初学者在使用dubbo设计架构过程中遇到的问题,并提供了相应的解决方法。问题包括传输字节流限制、分布式事务、序列化、多点部署、zk端口冲突、服务失败请求3次机制以及启动时检查。通过解决这些问题,初学者能够更好地理解和应用dubbo设计架构。 ... [详细]
  • 负载均衡_Nginx反向代理动静分离负载均衡及rewrite隐藏路径详解(Nginx Apache MySQL Redis)–第二部分
    nginx反向代理、动静分离、负载均衡及rewrite隐藏路径详解 ... [详细]
  • MACElasticsearch安装步骤及验证方法
    本文介绍了MACElasticsearch的安装步骤,包括下载ZIP文件、解压到安装目录、启动服务,并提供了验证启动是否成功的方法。同时,还介绍了安装elasticsearch-head插件的方法,以便于进行查询操作。 ... [详细]
author-avatar
够不李先生
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有