从文本缓存文件重写 url,否则找不到调用 php 文件

从文本缓存文件重写 url,否则找不到调用 php 文件

调用之前生成的缓存文件的方法

示例网址:example.com/story/2022/07/18/2192547/来自/home/example/2192547.txt

这很简单,但我需要它

如果找到 2192547.txt 使用

rewrite ^/story/([0-9]+)/([0-9]+)/([0-9]+)/([0-9]+)(.*)$ /home/example/$4.txt ;

否则使用

rewrite ^/story/([0-9]+)/([0-9]+)/([0-9]+)/([0-9]+)(.*)$ /post.php?id=$4&y=$1&m=$2&d=$3 ;

nginx 可以运行动态重写吗,有办法吗

答案1

这种方法应该有效:

location ~ /story/([0-9]+)/([0-9]+)/([0-9]+)/([0-9]+)/ {
    try_files /home/example/$4.txt /post.php?id=$4&y=$1&m=$2&d=$3;
}

在这里,我们捕获行中的相关 URL 部分location,然后在 中使用它们try_files,我们告诉 nginx 在访问匹配的 URL 时要尝试哪些文件。nginx 按顺序尝试条目,因此如果.txt未找到 ,则尝试post.php

相关内容