开发者社区> 问答> 正文

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

已解决

展开
收起
WM云建站 2016-02-01 12:29:32 2334 0
1 条回答
写回答
取消 提交回答
  • 阿里云论坛版主,QQ 1978638808
    采纳回答

    1) ACE 使用的是 Nginx 配置语法, 假设一个规则为:
    `
    rewrite ^(.+)$ /index.php?q=$1 last;
    `
    那么转化为 ACE 的配置则为: (复制代码后注意格式对齐, 否则会启动失败)
    `

    rewrite:
    - url: ^(.+)$
      script: /index.php?q=$1 last # 注意没有 ";"

    `
    2) 排除一些路径和文件类型的写法 (复制代码后注意格式对齐, 否则会启动失败)
    `

    感谢 picer 网友提供
      # 非index.php开头的网址,排除三种情况后转到index.php
      # 1.index.php 开头的网址
      # 2.css/,img/,js/,lib/,sjxq/ 目录开始的网址
      # 3.xxxx.php 形式的网址,以支持根目录下的php文件访问
      # 3.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: ^(/(?!(\.|Public|Uploads)).*)$      
      script: /index.php/$1 last

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

    2019-07-17 18:27:29
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载