Nginx 将 *.html 重写为 *.php

Nginx 将 *.html 重写为 *.php

我已经设置了我的第一个 Nginx 网站,并且重要的重写都已完成。它们必须是手动的,没有规则可以处理它,因此我制定了一系列规则来处理可能被索引或收藏的旧 URL:

rewrite ^/html/Air_III.html /designers-elements-air permanent;

在我们尚未访问的网站部分,还有一组奇怪的文件似乎获得了流量,所以我只是将它们复制过来。其中大部分文件已从旧的 .html 重命名为 .php,其余部分保持不变,但可能有些文件仍是 .html。

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

用“Apache 语言”来说,这将是一次redirect permanent重写。我宁愿不去追踪所有这些并手动完成它们!

答案1

你需要一个if陈述检查文件存在并适当重写:

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

相关内容