Web-Server
轉發(別名?重定向?路由?)子域到 Nginx 配置中的目錄
我想別名
m.example.com
,以便請求被轉發/別名,example.com/m/
但沒有使用者被重定向到/m/
目錄。例如,使用者訪問
m.example.com
,m.example.com/1.htm
,m.example.com/2.htm
但 nginx 將請求轉發/別名到example.com/m/
,example.com/m/1.htm
和example.com/m/2.htm
。我嘗試使用該
rewrite
指令,但這似乎執行客戶端重定向到example.com/m/
.我還查看了該
alias
指令,但這似乎只是修改了文件將在伺服器文件系統上提供的位置。我確信這一定是以前做過的,但我似乎無法解決這個問題。我是否在
alias
指令中使用了不正確的標誌(我已經嘗試了所有 4:last
,break
,redirect
,permanent
)。我是否錯過了完全使用的正確指令?使用重寫的配置片段:
server_name example.com m.example.com;
…
if ($host ~* m\.(.*)) { rewrite ^(.*)$ http://example.com/m$1 break; }
另一種嘗試:
server { listen 80; server_name m.example.com; location / { rewrite ^ http://example.com/m$request_uri permanent; } }
提前致謝。
這在 Nginx 中是不可能的。您可以使用 m 子域,但您必須在該伺服器塊中傳遞給您的後端。這是因為 Nginx 無法在不使用實際 HTTP 重定向的情況下重寫 URL,即使您告訴它它也會忽略它並強制進行 HTTP 重定向。
但是,如果您使用 fastcgi 後端,這並不重要,即使您將代理傳遞給 Apache,您仍然應該能夠將其配置為不關心。