伪静态 (Common.PesudoStatic)
伪静态插件支持全局转换url到伪静态url的功能.
伪静态插件主要分两部分实现, 第一部分通过基础插件提供的全局url过滤器替换url, 第二部分在处理请求时解析替换的url并返回原始url的结果.
伪静态设置
伪静态的url替换规则
- 如果路径是空, 跳过
- 如果路径是"/", 跳过
- 如果路径以"#"开始, 跳过
- 如果路径包含"://", 跳过
- 如果路径已经有后缀名, 跳过
- 如果路径的最后一段是空, 跳过(以"/"结束时)
- 如果伪静态未启用, 跳过
- 如果路径的最后一段包含分隔符, 跳过
- 判断伪静态策略
- 黑名单策略: 如果路径在排除路径中, 跳过
- 白名单策略: 如果路径不在包括路径中, 跳过
- 路径规则
- 无参数时: {原始路径}{后缀名}
- 只有id参数时: {原始路径}{分隔符}{id}{后缀名}
- 包含其他参数时: {原始路径}{分隔符}({参数名称}{分隔符}{参数值}...){后缀名}
- 如果路径中的参数或它的值包含分隔符, 该参数不参与到伪静态路径中
- 如果路径中的参数或它的值经过url编码后和原值不一致, 该参数不参与到伪静态路径中
- 这样做的原因是服务器会允许参数中有经过编码后的特殊字符
- 但不允许路径中有经过编码后的特殊字符, 或双重编码
伪静态的替换例子
/ => / /user/login => /user/login.html /example/view?id=1 => /example/view-1.html /example/list?tag=123&class=158 => /example/list-tag-123-class-158.html /example/list?key=1-1&class=123 => /example/list-class-123.html?key=1-1