Nginx 多个位置指令的一个别名

Nginx one alias for multiple location directives

我已经在单独的目录中安装了一个项目,以使该项目在多个域上可用

location ^~ /phpRedisAdmin/css/ {

        alias /home/phpRedisAdmin/css/;
}

location ^~ /phpRedisAdmin/js/ {

        alias /home/phpRedisAdmin/js/;
}

location ^~ /phpRedisAdmin/images/ {

        alias /home/phpRedisAdmin/images/;
}

为了防止为每个项目子目录声明一个位置指令,是否可以声明一个位置指令来处理所有可能的别名?

我正在寻找这样的东西(我不知道如何在别名指令中检索括号中的内容):

location ^~ /phpRedisAdmin/(css|images|js)/ {

        alias /home/phpRedisAdmin/>> what should I insert here? <</;
}

问题解决了,我最终使用了这个解决方案:

location ^~ /phpRedisAdmin/(css|images|js)$ {
    alias /home/phpRedisAdmin/;
}

你可以试试下面

   location ~* /phpRedisAdmin/(?P<folder>css|images|js)/ {
        alias /home/phpRedisAdmin/$folder;
    }

您不应使用 alias 指令,root 指令就足够了。一种解决方案是为所有低于 /phpRedisAdmin 的 URI 定义一个 location 块。例如:

location ^~ /phpRedisAdmin/ {
    root /home;

    location ~ \.php$ { 
        ... 
    }
}

如果您需要在此 location 中执行 PHP 个脚本,请添加一个嵌套位置(如上所示)。

如果您必须使用带有 alias 的正则表达式 location,您将需要捕获 URI 的 整个 剩余部分。例如:

location ^~ /phpRedisAdmin/((?:css|images|js)/.*)$ {
    alias /home/phpRedisAdmin/;
}

详情见this document