Nginx 将 *.html 重写为 *.php

G. *_*orn 5 rewrite nginx

我已经设置了我的第一个 Nginx 站点,并且重要的重写都已完成。它们必须是手动的,没有规则可能会处理它,所以我有很多这样的规则来处理可能被索引或书签的旧 URL:

rewrite ^/html/Air_III.html /designers-elements-air permanent;
Run Code Online (Sandbox Code Playgroud)

还有一组奇怪的文件似乎获得了流量,在网站的某些部分我们还没有访问过,所以我只是复制了它们。其中大部分都从旧的 .html 重命名为 .php,其他方面没有改变,但可能有些仍然是 .html。

我正在寻找一个规则,该规则将处理对任何目录中的任何 .html 文件的请求,该文件实际上与该名称的当前文件不匹配,并且将重写为 .php 文件(如果存在)。

在“Apache speak”中,这将是一个redirect permanent而不是重写。我宁愿不追踪所有这些并手工完成!

mgo*_*ven 8

您需要一个if语句来检查文件是否存在并适当地重写:

location ~ \.html$ {
    if (!-f $request_filename) {
        rewrite ^(.*)\.html$ $1.php permanent;
    }
}
Run Code Online (Sandbox Code Playgroud)