2 回答

TA貢獻1820條經驗 獲得超10個贊
您要么需要實現一些邏輯來將虛擬主機添加到apache http服務器(復雜且可疑),要么使用默認主機(響應現有虛擬主機未處理的所有傳入請求的主機)并在該主機中實現內部重寫規則。這允許您簡單地分發對此類“子域”(實際上是主機名)的引用。
這些重寫規則可能如下所示:
RewriteEngine on RewriteCond %{HTTP_HOST} ^([^.]+)\.example\.com$ RewriteRUle ^ %{REQUEST_URI}?user=%1 [END]
顯然,您需要根據實際設置進行調整,但它應該為您指明正確的方向。例如,您可以使用評估所請求主機的實現,而不是依賴于特定的 http get 參數,如上所示。但這些都是您必須自己決定的實現細節。
如果您使用上述規則收到內部服務器錯誤(http狀態500),那么您很可能操作的是一個非常舊版本的apache http服務器。在這種情況下,您將在 http 服務器錯誤日志文件中看到不受支持的標志的明確提示。您可以嘗試升級或使用較舊的標志,在這種情況下,它可能具有相同的工作方式,盡管這有點取決于您的設置。[END]
[L]
此實現同樣適用于 http 服務器主機配置或動態配置文件(“.htaccess”文件)中。顯然,重寫模塊需要加載到 http 服務器內部并在 http 主機中啟用。如果您使用動態配置文件,則需要注意在主機配置中完全啟用了它的解釋,并且它位于主機的文件夾中。DOCUMENT_ROOT
一般評論:您應該始終更喜歡將此類規則放在http服務器主機配置中,而不是使用動態配置文件(“.htaccess”)。這些動態配置文件增加了復雜性,通常是意外行為的原因,難以調試,并且它們確實會降低http服務器的速度。它們僅作為最后一個選項提供,用于您無法訪問真正的http服務器主機配置(閱讀:非常便宜的服務提供商)或堅持編寫自己的規則的應用程序(這是一個明顯的安全噩夢)。

TA貢獻2041條經驗 獲得超4個贊
這與htaccess無關。您可以設置 Web 服務器,以便 *.example.com 指向特定的公共根目錄。在該公共根中,駐留著一個php腳本,該腳本檢查數據庫以查看主機/用戶名是否應該存在。
因此,您的第一個 URL 會在數據庫中創建一條記錄,指出該記錄存在。然后,在訪問第二個 URL 時,腳本會看到域存在,然后執行動態操作。ajithjojo
如果它不存在,腳本將引發 404 標頭,或重定向到某個位置。
- 2 回答
- 0 關注
- 111 瀏覽
添加回答
舉報