【网站】简易的nginx伪静态配置

只是想简单的弄弄,快被网上的教程弄懵了?看看这个!

前言

今天弄长链接longlonglink时,查了很多教程"^"、"d+"、"/"让我分不清啥是啥,由于时间不多,不能慢慢的系统性学习,知道看到了某项目的nginx配置,掌握了最简单的方法!

方法

当我们只是想单纯的将“example.com/index.php?id=1”换成"example.com/1"时可以试试以下的代码:

location / {
    if (!-e $request_filename) {
    rewrite ^(.*)/(.*)$ $1/index.php?&id=$2 last;
    }
}

可以看到,其中“rewrite”里原链接以"^"开头"""结尾,替换后链接为“”开头"last"结尾。
“(.)”即为"/"前或后的字符串。
比如“http://blog.bgsnd.com/a/a”其实就是 " (.
)/(.)/(.)"的格式,出现的第一个区块为"http://blog.bgsnd.com",在替换后的链接可以用$1代替,第二个区块为为“a”可以用$2代替,以此类推。。。
对上面的代码稍稍改动就可以实现你的伪静态了。

举个栗子⭐️

想把 "blog.bgsnd.com/post/2020/08/23/1.html"代替"blog.bgsnd.com/post/index.php?yr=2020&mo=08&da=23&id=1"的伪静态配置即为

location / {
    if (!-e $request_filename) {
    rewrite ^(.*)/post/(.*)/(.*)/(.*)/(.*).html$ $1/post/index.php?&yr=$2&mo=$3&da=$4&id=$5 last;
    }
}

你GET了吗😁

Apache

认认真真的看完了教程发现自己服务器用的是Apache?没关系,试试这个转换器,将nginx的配置转换为Apache的配置。网址:https://winginx.com/en/htaccess

看不懂的干货

  • ~ 为区分大小写匹配
  • ~* 为不区分大小写匹配
  • !和!*分别为区分大小写不匹配及不区分大小写不匹配
  • -f和!-f用来判断是否存在文件
  • -d和!-d用来判断是否存在目录
  • -e和!-e用来判断是否存在文件或目录
  • -x和!-x用来判断文件是否可执行
    • 重复一次或更多次
      
  • ? 重复零次或一次
  • {n} 重复n次
  • {n,} 重复n次或更多次
  • {n,m} 重复n到m次
  • *? 重复任意次,但尽可能少重复
  • +? 重复1次或更多次,但尽可能少重复
  • ?? 重复0次或1次,但尽可能少重复
  • {n,m}? 重复n到m次,但尽可能少重复
  • {n,}? 重复n次以上,但尽可能少重复
  • last          相当于Apache里的[L]标记,表示完成rewrite
  • break         终止匹配, 不再匹配后面的规则
  • redirect         返回302临时重定向 地址栏会显示跳转后的地址
  • permanent       返回301永久重定向 地址栏会显示跳转后的地址
赞赏
0