Apache-2.2
如何創建一個擷取所有 Apache VHOST 條目?
您好我正在嘗試允許使用者使用 CNAME 將域映射到我們。我們的伺服器執行 CentOS 6.4 和 Apache。當我在另一個域上創建 CNAME 時,我們擁有以下值:
test.otherdomain.com -> app.example.com
該請求載入 www.example.com。這是我的 VHOSTS 中的第一條規則,其順序如下;
:80 ServerName www.example.com ServerAlias example.com :443 ServerName www.example.com ServerAlias example.com :80 ServerName sub1.example.com :443 ServerName sub1.example.com :80 ServerName sub2.example.com :443 ServerName sub2.example.com :80 ServerName app.example.com ServerAlias *.example.com :443 ServerName app.example.com ServerAlias *.example.com
*.example.com 允許使用者創建自定義子域,因此他們可以創建除 www、sub1 或 sub2 之外的任何內容。例如:acme.example.com。
經過一些研究,我發現問題是通過的主機與我的任何規則都不匹配,因此正在提供第一個定義的站點?當使用者訪問 test.otherdomain.com 時,如何創建預設或擷取將為 app.example.com 提供服務的所有站點?
使用者在我們的應用程序中以表格形式輸入他們的域,因此我無法將它們全部添加到我的虛擬主機條目中作為別名。如果我將 app.example.com 作為第一條規則(沒有萬用字元別名),然後再次使用萬用字元別名,Apache 似乎更喜歡萬用字元規則,靜態子域 sub1 和 sub2 重定向到 app.example.com。
謝謝!
固定的!
第一條規則必須是預設規則。像這樣改變規則使它起作用:
:80 ServerName app.example.com :443 ServerName app.example.com :80 ServerName www.example.com ServerAlias example.com :443 ServerName www.example.com ServerAlias example.com :80 ServerName sub1.example.com :443 ServerName sub1.example.com :80 ServerName sub2.example.com ServerAlias *.example.com :443 ServerName sub2.doexampleain.com ServerAlias *.example.com
這允許 sub1 是靜態的,並且由於 sub2/sub3 僅用於執行緒額外的 AJAX 呼叫,它們是應用程序的迷你版本。通過將該程式碼移動到主應用程序並更改萬用字元,使其不是應用程序規則的一部分,一切正常!