nginx匹配前缀后的位置

时间:2019-02-15 00:12:51

标签: nginx

问题在于nginx在www.example.com/en/上正确匹配了路径 或www.example.com/pl/,而不是www.example.com/en/something/。如果我访问www.example.com/en/something/,则会收到“欢迎使用nginx!”。页。 当我访问www.example.com/en/时,请执行重定向到www.example.com/en/something/的操作-这种情况有效。

我尝试了以下位置:“ / en”,“ ^〜/ en”。

这是怎么回事?

我的nginx.conf看起来像这样:

server {

        index index.html index.htm index.nginx-debian.html;
        server_name xxx; # managed by Certbot

        location / {
          root /usr/share/nginx/html/en;
          index index.html index.htm;
          try_files $uri $uri/ /index.html =404;
        }

        location /en/ {
          root /usr/share/nginx/html;
          index index.html index.htm;
          try_files $uri $uri/ /index.html =404;
        }

        location /pl/ {
          root /usr/share/nginx/html;
          index index.html index.htm;
          try_files $uri $uri/ /index.html =404;
        }

1 个答案:

答案 0 :(得分:1)

在当前配置下,您将使用try_files $uri $uri/ /index.html =404;

最后忽略冗余=404,如果找不到该文件,则将返回位于/usr/share/nginx/html/index.html的文件。该文件可能包含“欢迎使用nginx!”。

try_files指令的所有参数都类似于URI,而/en/索引页的正确URI是/en/index.html

例如:

index index.html index.htm;
root /usr/share/nginx/html;

location /en/ {
    try_files $uri $uri/ /en/index.html;
}
location /pl/ {
    try_files $uri $uri/ /pl/index.html;
}

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