OpenBSD 上の httpd: 「.php」で終わる URL をリダイレクトするにはどうすればよいでしょうか?

OpenBSD 上の httpd: 「.php」で終わる URL をリダイレクトするにはどうすればよいでしょうか?

私は OpenBSD 上で httpd(8) Web サーバーを実行しています。php-8.1.9 は php の提供に使用されます。 には/etc/httpd.conf次の内容が含まれています (example.comは実際のドメインのプレースホルダーです)。

server "example.com" {
    listen on * tls port 443

    tls {
        certificate "/etc/letsencrypt/live/example.com/fullchain.pem"
        key         "/etc/letsencrypt/live/example.com/privkey.pem"
    }

    root "/example.com/"
    directory index index.php

    location "*.php" {
        fastcgi socket "/run/php-fpm.sock"
    }

    location "/" {
        pass
    }

    location not found match "/(.*)$" {
        request rewrite "/%1.php"
    }
}

最後の 2 つのロケーション ブロックは、サイトをよりプロフェッショナルに見せるために、URL から '.php' サフィックスを削除しようとしたものです。これらは部分的には意図したとおりに機能します。つまり、ユーザーは と の両方にアクセスできhttps://example.com/fooますhttps://example.com/foo.php

https://example.com/fooHTML を手動で記述している場合は、ハイパーリンクを使用してユーザーをそのバージョンにリダイレクトできるため、これは問題になりません。

しかし、多くのページを生成する静的サイト ジェネレータを使用しているため、問題があります。各ページには、ユーザーを '.php' で終わる他のページにリダイレクトする HTML が含まれています。ジェネレータはコンパイルされた C プログラムであるため、簡単に編集できません。また、'.php' で終わるサイトを、よりクリーンで接尾辞のないバージョンにリダイレクトする方がはるかに簡単です。httpd でこれを行う方法はありますか?

のマニュアル ページには、httpd.confブロック ディレクティブを使用したリダイレクトの例が示されています。

server "example.com" {
    listen on 10.0.0.1 port 80
    listen on 10.0.0.1 tls port 443
    block return 301 "$REQUEST_SCHEME://www.example.com$REQUEST_URI"
}

しかし、私は httpd に十分精通していないため、自分でこれを行う方法がわかりません。 ご協力いただければ幸いです。

関連情報