【发布时间】:2013-08-20 17:47:52
【问题描述】:
所有...
我正在尝试在 nginx 中做一些事情来重定向所有对文件的调用
/images/
进入:
/assets/images/
有人可以帮我改写规则吗?给予 301 永久移动状态?
【问题讨论】:
所有...
我正在尝试在 nginx 中做一些事情来重定向所有对文件的调用
/images/
进入:
/assets/images/
有人可以帮我改写规则吗?给予 301 永久移动状态?
【问题讨论】:
将以下配置添加到您的 nginx.conf 中
rewrite ^/(images.*) /assets/$1 permanent;
【讨论】:
return 301 而不是重写是首选(nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/…),请参阅@gsf 的答案
这是使用较新版本的 Nginx 执行此操作的首选方法:
location ~ ^/images/(.*) {
return 301 /assets/images/$1;
}
请参阅https://www.nginx.com/blog/creating-nginx-rewrite-rules/ 了解更多信息。
【讨论】:
~ 是干什么用的? ^ 呢?它可以使用$request_uri 而不是$1 吗?
~(波浪号)表示这是一个区分大小写的正则表达式。否则,/Images 和 /imAgEs 的 URL 将匹配。如果这是所需的行为,则使用 ~* 使其不区分大小写。
^(插入符号)将其锚定到行首。没有它,/some/plugin/images/blah.jpg 这样的 URL 也会匹配。
location /images/ {return 301 /assets$request_uri;} 可以工作。但是,如果重定向除了添加到原始目录之外(例如/images -> /pics),则仍然需要正则表达式和$1。