
Estoy ejecutando un servidor web httpd(8) en OpenBSD. php-8.1.9 se utiliza para servir php. Tengo /etc/httpd.conf
lo siguiente ( example.com
es un marcador de posición para el dominio real):
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"
}
}
Los dos últimos bloques de ubicación son mi intento de eliminar las URL de sus sufijos '.php' para que mi sitio luzca más profesional. Funcionan parcialmente según lo previsto. Es decir, los usuarios pueden acceder a ambos https://example.com/foo
y https://example.com/foo.php
.
Esto no sería un problema si escribiera HTML manualmente, porque podría usar un hipervínculo para redirigir a los usuarios a la https://example.com/foo
versión.
Sin embargo, hay un problema porque estoy usando un generador de sitios estáticos que genera muchas páginas. Cada página contiene HTML que redirige a los usuarios a otras páginas que terminan en '.php'. No puedo editar fácilmente el generador porque es un programa C compilado. Además, sería mucho más fácil redirigir los sitios que terminan en '.php' a sus versiones mucho más limpias y sin sufijos. ¿Hay alguna manera de hacer esto con httpd?
La página de manual de httpd.conf
da un ejemplo de redirección utilizando la directiva de bloqueo:
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"
}
Sin embargo, no estoy lo suficientemente familiarizado con httpd como para saber cómo hacerlo yo mismo. Cualquier ayuda será muy apreciada.