我需要在nginx中創建一個虛擬子目錄,它將提供與根不同的位置的文件。這個虛擬目錄也運行PHP,但爲了簡潔,我省略了fastcgi配置。nginx位置塊中的負向lookbehind
我有兩個位置塊,一個用於/ virtual目錄使用別名,而位置塊for /有它自己的根指令。這個root指令被虛擬文件夾繼承,搞亂了路徑。有沒有什麼辦法可以通過繼承/ location塊的根指令來排除/ virtual中的url?
這裏是我的服務器配置的摘錄:
server {
root /path/to;
location ^~ /virtual/ {
alias /path/to/lions/public;
try_files $uri $uri/ /lions/public/index.php?$query_string;
}
location/{
root /path/to/tigers/public;
try_files $uri $uri/ /index.php?$query_string;
}
}
如果我瀏覽到主機名/虛擬/不管,nginx的查找文件在
/path/to/tigers/public/lions/public/whatever
,而不是
/path/to/lions/public/whatever
我已經嘗試過以下模式來匹配/除了那些以/ virtual開頭的所有網址,但沒有m什麼都可以。
location ^~ ((?!\/virtual)\/.*)$
我也嘗試在位置塊中爲/ virtual放置一個別名和根指令,但nginx不會啓動。
是否有任何其他方式來爲我的別名目錄有不同的根?
嘗試[這種方法](https://stackoverflow.com/a/16304073/3832970)。使用'location〜^ /?virtual /.*$ {#empty}',然後使用'location/{...}' –