Domain-Name-System

Lighttpd 將子域重寫到子文件夾

  • June 16, 2014

我有一個萬用字元 DNS 指向它的伺服器(本身在子域上)。伺服器正在執行 Lighttpd 和 PHP。

我需要請求http://any-subdomain.server.example.com重寫http://server.example.com/site/any-subdomain並從那裡獲得服務。它必須對使用者完全透明。

這是我的相關配置:

$HTTP["host"] =~ "^(.*)\.server\.example\.com$" {
   url.rewrite-once = ( "^(.*)" => "/site/%1/$1" )
}

它似乎工作除了子文件夾,它被重定向到subdomain.server.example.com/site/subdomain/subfolder然後是 404 的。

我找到了一種更好的方法,然後使用重寫。相反,我使用了 mod_simple_vhost

simple-vhost.server-root = "/var/www/site/"
simple-vhost.default-host = "myquick.club"
simple-vhost.document-root = "www"

這比在這種情況下使用 mod_rewrite 簡單得多。雖然這是一件苦差事,但我希望這對將來的其他人有所幫助。

url.rewrite-once更改URL 路徑(和查詢字元串);您的重寫規則看起來像您正在嘗試重寫磁碟上的文件夾。

您不能“重寫”主機,但可以處理具有相同物理文件映射的兩個主機名(以及 fastcgi 後端和…);例如,您可以server.document-root從另一個 vhost 複製設置,或者只是使另一個 vhost 有條件地匹配兩個主機名。

如果你有“catch-all”預設虛擬主機塊,請記住,對於每個配置選項,最後一個活動塊設置它會覆蓋所有其他塊(使用該-p選項在評估後查看內部順序+=等等),所以從預設值開始虛擬主機。

僅作記錄:“相關”配置至少包括兩個虛擬主機的部分,而不僅僅是第二個:)

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