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

最後兩個位置區塊是我嘗試移除 URL 的「.php」後綴,以使我的網站看起來更專業。它們部分按預期工作。也就是說,用戶可以訪問https://example.com/foohttps://example.com/foo.php

如果我手動編寫 HTML,這不會成為問題,因為我可以使用超連結將使用者重定向到該https://example.com/foo版本。

但是,存在一個問題,因為我使用的是產生大量頁面的靜態網站產生器。每個頁面都包含 HTML,它將使用者重新導向到以“.php”結尾的其他頁面。我無法輕鬆編輯生成器,因為它是編譯的 C 程式。此外,將以“.php”結尾的網站重定向到更乾淨且無後綴的版本會容易得多。有沒有辦法用 httpd 來做到這一點?

的手冊頁httpd.conf給出了使用 block 指令進行重定向的範例:

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 不太熟悉,也不知道我該怎麼做。任何幫助將不勝感激。

相關內容