
Ich betreibe einen httpd(8)-Webserver unter OpenBSD. PHP wird mit php-8.1.9 bereitgestellt. /etc/httpd.conf
Ich habe Folgendes ( example.com
ist 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/foo
zugreifen 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/foo
Version 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.conf
enthä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.