nginx 重写文件名删除部分名称

nginx 重写文件名删除部分名称

我似乎无法弄清楚这个 nginx url 重写。

这就是我需要的

网址如下:

/经理/

/经理/仪表板

/经理/会话

/经理/查看

这些按顺序映射到:

/管理器/index__cms.php

/管理器/index__cms.php

/manager/dashboard__cms.php

/manager/session__cms.php

/manager/view__cms.php

还:

/manager/js/module - 映射到 - /manager/js/module_js.php

/manager/js/index - 映射到 - /manager/js/index_js.php

我会重命名这些文件,但之前的程序员使用这些 URL 映射将所有内容都映射出来。并且该程序之前在 apache 上,现在在 nginx 上。

我目前拥有的是:

location /manager {
index index__cms.php;
rewrite ^(.*)\__cms.php break;
}

解决方案:

我做了以下事情。虽然不太美观,但确实有效。

location /manager {index index__cms.php; try_files $uri $uri/ /manager/index__cms.php$is_args$args;}
location /manager/dashboard {try_files $uri $uri/ /manager/index__cms.php$is_args$args;}
location /manager/session {try_files $uri $uri/ /manager/session__cms.php$is_args$args;}

有 20 多个文件,这比创建动态方法要简单得多。需要这个的代码在不久的将来就会退役,所以它不需要很漂亮,因为它会和支持它的配置一起被删除。

答案1

类似这样的事情可能会有用:

map $uri $remapped_uri {
    default                 $uri;
    ~^/manager/([^/]+)$     /manager/$1__cms.php;
    ~^/manager/js/([^/]+)$  /manager/js/$1_js.php;
}

server {
    ...
    location /manager/ {
        index index__cms.php;
        rewrite .* $remapped_uri last;
    }
}

但是,请求yourdomain.com/manager/js/转到是否正确yourdomain.com/manager/js/index__cms.php?如果不是,并且 的正确索引文件yourdomain.com/manager/js/index_js.php,下面是另一个示例:

map $uri $remapped_uri {
    default                 $uri;
    /manager/               /manager/index__cms.php;
    ~^/manager/([^/]+)$     /manager/$1__cms.php;
    /manager/js/            /manager/js/index_js.php;
    ~^/manager/js/([^/]+)$  /manager/js/$1_js.php;
}

server {
    ...
    location /manager/ {
        rewrite .* $remapped_uri last;
    }
}

作为/manager,:/manager/js​​/manager//manager/js/

map $uri $remapped_uri {
    default                 $uri;
    ~^/manager/?$           /manager/index__cms.php;
    ~^/manager/([^/]+)$     /manager/$1__cms.php;
    ~^/manager/js/?$        /manager/js/index_js.php;
    ~^/manager/js/([^/]+)$  /manager/js/$1_js.php;
}

server {
    ...
    location /manager {
        rewrite .* $remapped_uri last;
    }
}

也可以看看回答。

相关内容