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