Domain-Name-System
Lighttpd 將子域重寫到子文件夾
我有一個萬用字元 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
選項在評估後查看內部順序+=
等等),所以從預設值開始虛擬主機。僅作記錄:“相關”配置至少包括兩個虛擬主機的部分,而不僅僅是第二個:)