Nginx
Nginx 多根
我想將請求轉移到特定的子目錄,轉移到另一個根位置。如何?我現有的塊是:
server { listen 80; server_name www.domain.com; location / { root /home/me/Documents/site1; index index.html; } location /petproject { root /home/me/pet-Project/website; index index.html; rewrite ^/petproject(.*)$ /$1; } # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }
也就是說,http://www.domain.com應該服務於 /home/me/Documents/site1/index.html 而http://www.domain.com/petproject應該服務於 /home/me/pet-Project/website /index.html - 似乎 nginx 在替換後重新執行了所有規則,而http://www.domain.com/petproject只是服務於 /home/me/Documents/site1/index.html 。
配置有通常發生在 nginx 上的常見問題。也就是說,在塊
root
內使用指令。location
嘗試使用此配置而不是您目前的
location
塊:root /home/me/Documents/site1; index index.html; location /petproject { alias /home/me/pet-Project/website; }
這意味著您網站的預設目錄是
/home/me/Documents/site1
,對於/petproject
URI,內容是從/home/me/pet-Project/website
目錄提供的。
您需要將
break
標誌添加到重寫規則中,以便處理停止,並且由於這是在位置塊內,處理將在該塊內繼續:rewrite ^/petproject/?(.*)$ /$1 break;
請注意,我還添加
/?
了匹配模式,這樣您就不會在 url 的開頭出現雙斜杠。