URL模式
LMLPHP支持PATH_INFO,参数模式,普通模式三种URL模式,优先级从前到后。三种方式都分别拥有各自的rewrite模式。下面对这三种方式逐一进行分解:
PATH_INFO模式 (LMLPHP在PATH_INFO不存在时,通过SCRIPT_URI获取PATH_INFO,因此在服务器不提供PATH_INFO时也可使用)
参数模式 (LMLPHP默认的rewrite规则只去除入口文件,如果更改rewrite规则可以达到和PATH_INFO一样的效果)
普通模式
PATH_INFO模式 (LMLPHP在PATH_INFO不存在时,通过SCRIPT_URI获取PATH_INFO,因此在服务器不提供PATH_INFO时也可使用)
URL | Module | Action |
---|---|---|
http://www.domain.com/index.php/ | ModuleIndex | index |
http://www.domain.com/index.php/Article | ModuleArticle | index |
http://www.domain.com/index.php/Article/newest | ModuleArticle | newest |
对应rewrite模式如下: | ||
http://www.domain.com/ | ModuleIndex | index |
http://www.domain.com/Article | ModuleArticle | index |
http://www.domain.com/Article/newest | ModuleArticle | newest |
参数模式 (LMLPHP默认的rewrite规则只去除入口文件,如果更改rewrite规则可以达到和PATH_INFO一样的效果)
URL | Module | Action |
---|---|---|
http://www.domain.com/index.php?path=/ | ModuleIndex | index |
http://www.domain.com/index.php?path=/Article | ModuleArticle | index |
http://www.domain.com/index.php?path=/Article/newest | ModuleArticle | newest |
对应rewrite模式如下: | ||
http://www.domain.com/?path=/ | ModuleIndex | index |
http://www.domain.com/?path=/Article | ModuleArticle | index |
http://www.domain.com/?path=/Article/newest | ModuleArticle | newest |
普通模式
URL | Module | Action |
---|---|---|
http://www.domain.com/index.php | ModuleIndex | index |
http://www.domain.com/index.php?m=Article | ModuleArticle | index |
http://www.domain.com/index.php?m=Article&a=newest | ModuleArticle | newest |
对应rewrite模式如下: | ||
http://www.domain.com/ | ModuleIndex | index |
http://www.domain.com/?m=Article | ModuleArticle | index |
http://www.domain.com/?m=Article&a=newest | ModuleArticle | newest |
关于URL模式
LMLPHP在URL模式上将最美丽的PATH_INFO模式的优先级设置为最高。为了让URL更加精美,系统对PATH_INFO的级别只处理到二级,并没有对后面的部分按照参数名,参数值的方式解析到$_GET中。作者认为PATH_INFO的美在于它以"/"分割,不需要参数名,如果后面的部分被参数名占据,URL显得臃肿。因此,在使用PATH_INFO模式的URL时,可以使用路由机制或者在到达控制器后再通过分析REQUEST_URI的方式达到最精简的URL效果。
CLI运行时URL模式
LMLPHP完美支持CLI模式运行,URL解析模式与CGI方式运行完全相同,需要注意的是CLI模式下是按照第一个参数名作为REQUEST_URI解析的。如下示例:
$php index.php /user/info