Lighttpd

Lighttpd 如果文件夾中存在 ./cgi-bin/index.cgi 則執行

  • February 4, 2022

BusyBox httpd./cgi-bin/index.cgi如果存在則執行。這類似於index.php但與/cgi-bin/文件夾。例如,我有以下結構:

/api/
 cgi-bin/index.cgi
/blog/
 cgi-bin/index.cgi
 /rss/
   cgi-bin/index.cgi

因此,當請求發送時,http://example.com/api/它們實際上是由/www/api/cgi-bin/index.cgi腳本處理的。當被請求http://example.com/blog/時,它被處理,/www/blog/cgi-bin/index.cgi/blog/rss/路徑被處理/www/blog/rss/cgi-bin/index.cgi

但現在我也想支持 Lighttpd 網路伺服器。我怎樣才能做到這一點?

這似乎類似於使 lighttpd 從 www.example.com 重定向到 www.example.com/cgi-bin/index.pl但要復雜得多。

最簡單的解決方案是使用 lighttpd mod_indexfile:

index-file.names = ( "cgi-bin/index.pl" )

如果您想在內部重寫目標,另一種方法是嘗試 lighttpd mod_rewrite:

一般:

url.rewrite-once = ( ".*/(?:\?|$)" => "${url.path}cgi-bin/index.pl${qsa}" )

更準確地說,僅適用於範例中的路徑:

url.rewrite-once =
 ( "^/(?:api|blog(?:/rss)?)/(?:\?|$)" => "${url.path}cgi-bin/index.pl${qsa}" )

引用自:https://serverfault.com/questions/1090298