Nginx如何将正则表达式中的多个位置映射到单个目录

时间:2019-05-16 13:24:27

标签: nginx

我的应用程序使用单个Web应用程序(HTML和Javascript)为多个(动态量)系统提供服务。

系统由http://localhost/sites/<system-id>之类的URL区分,其中system-id仅允许小写字母。

假设该Web应用位于/opt/myapp中。如何在Nginx中进行配置?

我尝试了以下方法,但没有用。

location ~ /sites/[a-z]+ {
   alias /opt/myapp;
   index index.html index.htm; 
}

输入http://localhost/sites/abc/,得到403 forbidden

输入http://localhost/sites/abc/index.html,仍然输入403 forbidden,URL自动更改为http://localhost/sites/abc/index.html/

location ~ /sites/[a-z]+/ {}相同的结果

我尝试过

location ~ /sites/[a-z]+ {
   alias /opt/myapp/;
   index index.html index.htm; 
}

输入http://localhost/sites/abc,URL重定向到http://localhost/sites/abc/index.html/index.html/index.html/index.html/index.html/index.html/index.html/index.html/index.html/index.html/index.html/index.html/index.html/index.html/index.html/index.html/index.html/index.html/index.html/

1 个答案:

答案 0 :(得分:1)

正则表达式中的alias指令 location必须形成文件的完整路径。

例如:

location ~ ^/sites/[a-z]+(/.*)?$ {
    alias /opt/myapp$1;
    index index.html index.htm; 
}

有关详细信息,请参见this document