伪静态


MiniFramework 在设置了 Rewrite 规则后,可实现类似下面这种伪静态访问方式:

http://localhost/Controller/Action/param1/value1/param2/value2

当框架以伪静态模式访问时,URL中的参数需要通过框架内置方法获取,例如:

$params = $this->params->getParams(); //获取全部参数

或者,也可以这样:

$param1 = $this->params->getParam('param1'); //获取指定的参数

提示:伪静态时通过框架内置方法获取URL参数的设计初衷是尽量不去污染$_GET。

运行于 Apache 的设置方法

向 Public 目录中添加一个 .htaccess 文件(附带的应用案例中已提供),内容如下:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [L]

运行于 Nginx 的设置方法

在 nginx.conf 中,找到对应的站点,向 server{} 中添加如下设置:

location / {
    index  index.html index.php;
    if (!-e $request_filename) {
        rewrite ^/(.*)$ /index.php last;
    }
}

提示:MiniFramework 从 1.0.10 版本开始,支持使用下划线作为 URL 分隔符,和支持以 .html 结尾的伪静态 URL ,例如:
http://localhost/Controller/Action/param1_value1_param2_value2.html

自定义伪静态扩展名

MiniFramework 从 2.6.0 版本开始,支持通过常量 URL_SUFFIX 定义伪静态扩展名,默认值为"htm|html|shtml"。

例如,可以在应用入口文件 index.php 中进行定义:

// 定义伪静态扩展名(多个扩展名用"|"间隔)
const URL_SUFFIX = 'htm|html|shtml';

自定义伪静态时URL参数的分隔符号

MiniFramework 从 2.6.0 版本开始,支持通过常量 URL_SPLIT_SYMBOL 来自定义伪静态时 URL 参数的分隔符号。

例如,可以在应用入口文件 index.php 中进行定义:

// 定义分隔符号为减号
const URL_SPLIT_SYMBOL = '-';

通过上边的定义,便可实现类似下边的伪静态URL:

http://localhost/Controller/Action/param1-value1-param2-value2.html

结合实际应用场景,例如:

http://localhost/user/info/id-1.html