ACE如何写 rewrite/转发/伪静态规则

  1. ACE使用的是Nginx配置语法, 假设一个规则为:

    rewrite \^(.+)$ /index.php?q=$1 last;

    那么转化为ACE的配置则为: (复制代码后注意格式对齐, 否则会启动失败)

    rewrite:
      - url: \^(.+)$
        script: /index.php?q=$1 last # 注意没有 ";"
    
  2. 排除一些路径和文件类型的写法 (复制代码后注意格式对齐, 否则会启动失败) 非index.php开头的网址,排除三种情况后转到index.php index.php 开头的网址 css/,img/,js/,lib/,sjxq/ 目录开始的网址 xxxx.php 形式的网址,以支持根目录下的php文件访问 xxx.html 形式的网址,以支持根目录下的html文件访问
    rewrite:
      - url: \^(\/(?\!(index\.php\|(?:css\|js\|img\|lib\|flash\|help\|html\|font)\/\|[\^\/|]*?\..*)).*)$
        script: /index.php?/$1
    
  3. 常用的 apache 的转发规则,如:
    RewriteCond %{REQUEST_FILENAME} \!-f
    RewriteCond %{REQUEST_FILENAME} \!-d
    RewriteRule \^(.*)$ index.php [L,QSA]
    

    改写为 ACE 时可以直接用 tryuri: (复制代码后注意格式对齐, 否则会启动失败)

    tryuri:
      - path: /
        script: /index.php
    
  4. 外部跳转 (复制代码后注意格式对齐, 否则会启动失败)
    rewrite:
      - url: \^/1.gif$
        script: [http://xxx.com] perment
    
  5. ThinkPHP 常用规则, 实现 /index.php/aa/bb 优化成 /aa/bb , 记得要重启(不仅是重新发布)应用 (复制代码后注意格式对齐以及去掉多余空格, 否则会启动失败)
    rewrite:
      - url: \^(/(?\!(\.)).*)$
        script: /index.php/$1 last
    

    这个规则只是抛砖引玉, 完全和 nginx 一致