伪静态 (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