我正在将所有文档从/docs/path/to/sub/*.pdf
移动到其父文件夹/docs/path/to/*.pdf
。
如何从旧网址重定向:
example.com/docs/path/to/sub/file.pdf
到新网址
example.com/docs/path/to/file.pdf
我正在使用以下方法但不能正常工作:
location /docs/ {
rewrite ^/docs/([a-zA-Z_]+)/([a-zA-Z_]+)/([a-zA-Z_]+)/([a-zA-Z_]+)\.(.*)$ /docs/$1/$2/$3/$5 permanent;
}
答案 0 :(得分:0)
您正在使用permanent
标记,这意味着重定向,重定向后网址可能会返回404,尝试将permanent
替换为last
并查看其是否有效。
修改强>
我认为你的错误是你正在匹配扩展,所以你做的计数错了,你没有足够的捕获块。我想以更动态的方式做到这一点,不确定这是否有效。
location ^~ /docs(.*)/([^/]+)/(.*) {
try_files $uri @redirect;
}
location @redirect {
return 301 $scheme$http_host/docs$1$3;
}
如果没有,你可以改变你当前的重写,假设你有5个捕获块,
/docs/$1/$2/$4$5
最后2个是文件+扩展名