httpd unter OpenBSD: Wie leite ich URLs um, die auf „.php“ enden?

httpd unter OpenBSD: Wie leite ich URLs um, die auf „.php“ enden?

Ich betreibe einen httpd(8)-Webserver unter OpenBSD. PHP wird mit php-8.1.9 bereitgestellt. /etc/httpd.confIch habe Folgendes ( example.comist ein Platzhalter für die eigentliche Domain):

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"
    }
}

Die letzten beiden Standortblöcke sind mein Versuch, URLs von ihren '.php'-Suffixen zu befreien, um meiner Site ein professionelleres Aussehen zu verleihen. Sie funktionieren teilweise wie beabsichtigt. Das heißt, Benutzer können sowohl auf als auch https://example.com/foozugreifen https://example.com/foo.php.

Dies wäre kein Problem, wenn ich HTML manuell schreiben würde, da ich die Benutzer einfach mit einem Hyperlink zur https://example.com/fooVersion weiterleiten könnte.

Es gibt jedoch ein Problem, da ich einen statischen Site-Generator verwende, der viele Seiten generiert. Jede Seite enthält HTML, das Benutzer auf andere Seiten mit der Endung „.php“ umleitet. Ich kann den Generator nicht einfach bearbeiten, da es sich um ein kompiliertes C-Programm handelt. Außerdem wäre es viel einfacher, Sites mit der Endung „.php“ einfach auf ihre viel saubereren und nicht mit Suffixen versehenen Versionen umzuleiten. Gibt es eine Möglichkeit, dies mit httpd zu tun?

Die Manpage httpd.confenthält ein Beispiel für die Umleitung mithilfe der Blockdirektive:

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"
}

Ich bin jedoch mit httpd nicht vertraut genug, um zu wissen, wie ich das selbst machen kann. Für jede Hilfe wäre ich dankbar.

verwandte Informationen