URL解析

  1. ThinkPHP 框架非常多的操作都是通过URL来实现的;
  2. http://serverName/index.php/模块/控制器/操作/参数/值;
  3. index.php为入口文件,在public目录内的index.php文件;
  4. 模块在application目录下默认有一个index目录,这就是一个模块;
  5. 而在index目录下有一个controller控制器目录的Index.php控制器;
  6. Index.php控制器的类名也必须是class Index,否则错误;
  7. 而操作就是控制器class Index里面的方法,比如:index或hello;
  8. 那么完整形式为:public/index.php/index/index/index
  9. 官方给的默认模块,默认控制器,默认操作都是index,所以出现四个index;
  10. 而操作还另给了一个带参数的方法:hello,如下:
  11. 那么完整形式为:public/index.php/index/index/hello/name/Lee
  12. 为了更清晰的了解URL路径的执行过程,我们自己创建一个完全不重复的URL;
  13. 在application目录下创建一个test目录(模块);
  14. 在test模块下创建控制器目录controller,并在旗下创建Abc.php(控制器);
  15. 创建如下代码: ```php <?php namespace app\test\controller; class Abc{ public function eat($name= ‘ww’){
    1. return '吃饭!'.$name;
    } }

?> ```

  1. 代码中eat是方法(操作),$who是参数,’隔壁老王’是值;
  2. 完整形式为:public/index.php/test/abc/eat/who/主人老李

    URL模式

  3. 上个要点已经了解了URL所有访问规则,通过创建test模块更加了解;

  4. 如果wamp环境没有开启伪静态,那么ThinkPHP不支持URL重写;
  5. 没有开启URL重写,那只能使用PATH_INFO模式,如下:
  6. public/index.php?s=test/abc/eat/who/主人老李;
  7. 我们这里是Apache,其它环境请,如果你使用了,请参考手册;
  8. 打开httpd.conf文件,加载mod_rewrite.so,即去掉前面的#号;
  9. 将下面代码,放入入口文件index.php同级目录下的.htaccess;
  10. 上一步,框架本身已经做好了,那其实就是第6步一步,然后重启环境;
  11. 此时的URL重写,可以省略index.php了,路径如下:
  12. public/test/abc/eat/who/主人老李