×

php路由模式三种写法

php路由模式三种写法(php路由模式三种写法图片)

admin admin 发表于2023-03-29 23:08:07 浏览66 评论0

抢沙发发表评论

本文目录一览:

tp5路由模式有哪三种

tp5有三大路由模式,普通模式、混合模式和强制模式。

普通模式:只能使用

PATH_INFO

的方式访问,所有路由规则均失效。

混合模式:也是tp5默认的模式,如果为一个地址定义了路由规则,则必须使用该规则访问(

PATH_INFO

方式失效),如果没有定义路由规则,则按照

PATH_INFO

方式访问即可。

比如我们为

 

在Rout.php路由规则文件中定义了路由规则(原文来自tongpankt.com)

think\Route::rule('demo','index/Index/demo');  

那么我们就必须使用定义好的路由规则进行访问:

 

如果你为一个地址定义好了路由,却不使用定义好的规则访问,就会报错。

也就是说:

 

是错的。(当然上线的时候我们会被public和index.php也给隐藏掉)

强制模式:顾名思义,全站所有地址必须定义路由规则,并且必须使用定义好的路由规则访问,不得使用

thinkphp3.2路由写法

最近也给自己博客(uzuzuz.com)弄了个简单的路由,我是这么写的给你个参考,记得HTML_CACHE_RULES也要对应上

    'URL_ROUTER_ON' = true,

    'URL_ROUTE_RULES' = array(

        'article/:id' = 'home/index/index_d',

        'article' = 'home/index/index',

    ),

    'HTML_CACHE_ON' = true, // 开启静态缓存

    'HTML_CACHE_TIME' = 3600, // 全局静态缓存有效期(秒)

    'HTML_FILE_SUFFIX' = '.html', // 设置静态缓存文件后缀

    'HTML_CACHE_RULES' = array(// 定义静态缓存规则

       'article:' = array('home/index/index_d'),    

    )

原来home/index/index_d/id/1.html 路由后生成的是article/1.html

thinkphp5 路由怎么写

点击4个不同的路由地址,可以查看当前的路由情况。

路由到read操作

路由到archive操作

项目配置文件中的路由定义如下:

//启用路由功能

'URL_ROUTER_ON'=true,

//路由定义

'URL_ROUTE_RULES'= array(

'blog/:year\d/:month\d'='Blog/archive', //规则路由

'blog/:id\d'='Blog/read', //规则路由

'blog/:cate'='Blog/category', //规则路由

'/(\d+)/' = 'Blog/view?id=:1',//正则路由

),

在模板文件中,我们使用了U函数动态生成路由地址:

路由1:blog/curd

路由2:blog/5

路由3:blog/2012/09

路由4:100这样试试呢希望能帮到你,我去后盾网忙活我的了,加油(=^▽^=)

如何在PHP中实现URL路由

第一步,首先要在服务器的配置上对/router/路径进行拦截

调用某个文件夹目录下的index.php页面,假定现在所有模块使用单独的文件存放于class目录下,该目录与router平级,如下图所示:

第二步,路由分发器的实现(index.php)

1: !Doctype html

2: html

3: head

4: title路由测试~~/title

5: meta http-equiv="content-type" content="text/html; charset=utf-8" /

6: /head

7: body

8:

9: ?php

10:

11: date_default_timezone_set("Asia/Shanghai");

12:

13: define("MODULE_DIR", "../class/");

14:

15:

16: $_DocumentPath = $_SERVER['DOCUMENT_ROOT'];

17: $_FilePath = __FILE__;

18: $_RequestUri = $_SERVER['REQUEST_URI'];

19:

20: $_AppPath = str_replace($_DocumentPath, '', $_FilePath); //==\router\index.php

21: $_UrlPath = $_RequestUri; //==/router/hello/router/a/b/c/d/abc/index.html?id=3url=http:

22:

23: $_AppPathArr = explode(DIRECTORY_SEPARATOR, $_AppPath);

24:

25: /**

26: * ;url=http:

27: *

28: * /hello/router/a/b/c/d/abc/index.html?id=3url=http:

29: */

30:

31: for ($i = 0; $i count($_AppPathArr); $i++) {

32: $p = $_AppPathArr[$i];

33: if ($p) {

34: $_UrlPath = preg_replace('/^\/'.$p.'\//', '/', $_UrlPath, 1);

35: }

36: }

37:

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

39:

40: $_AppPathArr = explode("/", $_UrlPath);

41: $_AppPathArr_Count = count($_AppPathArr);

42:

43: $arr_url = array(

44: 'controller' = 'index',

45: 'method' = 'index',

46: 'parms' = array()

47: );

48:

49: $arr_url['controller'] = $_AppPathArr[0];

50: $arr_url['method'] = $_AppPathArr[1];

51:

52: if ($_AppPathArr_Count 2 and $_AppPathArr_Count % 2 != 0) {

53: die('参数错误');

54: } else {

55: for ($i = 2; $i $_AppPathArr_Count; $i += 2) {

56: $arr_temp_hash = array(strtolower($_AppPathArr[$i])=$_AppPathArr[$i + 1]);

57: $arr_url['parms'] = array_merge($arr_url['parms'], $arr_temp_hash);

58: }

59: }

60:

61: $module_name = $arr_url['controller'];

62: $module_file = MODULE_DIR.$module_name.'.class.php';

63: $method_name = $arr_url['method'];

64:

65: if (file_exists($module_file)) {

66: include $module_file;

67:

68: $obj_module = new $module_name();

69:

70: if (!method_exists($obj_module, $method_name)) {

71: die("要调用的方法不存在");

72: } else {

73: if (is_callable(array($obj_module, $method_name))) {

74: $obj_module - $method_name($module_name, $arr_url['parms']);

75:

76: $obj_module - printResult();

77: }

78: }

79:

80: } else {

81: die("定义的模块不存在");

82: }

83:

84:

85: ?

86:

87: /body

88: /html

获取请求的uri,然后拿到要加载的模块名、调用方法名,对uri参数进行简单的判断..

第三步,模块的编写

根据上述的uri,我们要调用的是Hello模块下的router方法,那么可以在class目录下定义一个名为Hello.class.php的文件(注意linux下是区分大小写的)

1: ?php

2:

3: class Hello {

4:

5: private $_name;

6: private $_varValue;

7:

8: function __construct() {

9:

10: }

11:

12: function router() {

13: $this-_name = func_get_arg(0);

14: $this-_varValue = func_get_arg(1);

15: }

16:

17: function printResult() {

18: echo $this-_name;

19: echo "p";

20: echo var_dump($this-_varValue);

21: echo "/p";

22: }

23: }

24:

25: ?