OpenBSD의 httpd: '.php'로 끝나는 URL을 리디렉션하는 방법은 무엇입니까?

OpenBSD의 httpd: '.php'로 끝나는 URL을 리디렉션하는 방법은 무엇입니까?

저는 OpenBSD에서 httpd(8) 웹 서버를 실행하고 있습니다. 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"
    }
}

마지막 두 위치 블록은 내 사이트를 더욱 전문적으로 보이게 하기 위해 URL의 '.php' 접미사를 제거하려는 시도입니다. 의도한 대로 부분적으로 작동합니다. 즉, 사용자는 https://example.com/foo및 에 모두 액세스할 수 있습니다 https://example.com/foo.php.

HTML을 수동으로 작성하는 경우에는 문제가 되지 않습니다. 하이퍼링크를 사용하여 사용자를 해당 https://example.com/foo버전으로 리디렉션할 수 있기 때문입니다.

그런데 페이지를 많이 생성하는 정적 사이트 생성기를 사용하고 있기 때문에 문제가 있습니다. 각 페이지에는 사용자를 '.php'로 끝나는 다른 페이지로 리디렉션하는 HTML이 포함되어 있습니다. 컴파일된 C 프로그램이기 때문에 생성기를 쉽게 편집할 수 없습니다. 게다가 '.php'로 끝나는 사이트를 훨씬 더 깔끔하고 접미사가 없는 버전으로 리디렉션하는 것이 훨씬 더 쉬울 것입니다. httpd로 이것을 할 수 있는 방법이 있나요?

매뉴얼 페이지에서는 httpd.confblock 지시문을 사용한 리디렉션의 예를 제공합니다.

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에 익숙하지 않습니다. 도움을 주시면 감사하겠습니다.

관련 정보