nginx重写文件夹的重定向

aly*_*awy 13 redirect rewrite nginx

所有...

我试图在nginx中做一些事情来重定向所有文件调用

/images/
Run Code Online (Sandbox Code Playgroud)

成为:

/assets/images/
Run Code Online (Sandbox Code Playgroud)

有人可以帮我改写重写规则吗?给301移动永久身份?

gsf*_*gsf 34

以下是使用较新版本的Nginx执行此操作的首选方法:

location ~ ^/images/(.*) {
    return 301 /assets/images/$1;
}
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅https://www.nginx.com/blog/creating-nginx-rewrite-rules/.

  • @ingo参见[位置文档](http://nginx.org/en/docs/http/ngx_http_core_module.html#location).`~`(代字号)表示这是一个区分大小写的正则表达式.否则,`/ Images`和`/ imAgEs`的URL将匹配.如果这是所需的行为,那么使用`〜*`使其不区分大小写. (3认同)
  • @ingo正则表达式前面的`^`(插入符号)将它固定在行的开头.没有它,像`/ some/plugin/images/blah.jpg`这样的网址也会匹配. (3认同)
  • @ingo在这种情况下,`location/images/{return 301/assets $ request_uri;}`会起作用.但是,如果重定向除了前置到原始目录之外还执行任何操作(例如`/ images` - >`/ pics`),则仍然需要正则表达式和`$ 1`. (3认同)

小智 6

将以下配置添加到您的 nginx.conf 中

rewrite ^/(images.*) /assets/$1 permanent;
Run Code Online (Sandbox Code Playgroud)

  • `return 301` 而不是重写是首选( https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/#taxing-rewrites ),请参阅@gsf 的答案 (3认同)