2014-01-09 41 views
0

我将所有文档从/docs/path/to/sub/*.pdf移动到其父文件夹/docs/path/to/*.pdf

如何从旧的URL重定向:

example.com/docs/path/to/sub/file.pdf

到新的URL

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

你'正在使用permanent标志意味着重定向,该URL可能会在重定向后返回404,请尝试用last替换permanent并查看它是否有效。

编辑:

,我认为你的错误是,你是相匹配的扩展,所以你在做计数错了,你没有足够的捕捉块。我想以更具活力的方式做到这一点,但不知道这是否会奏效。

location ^~ /docs(.*)/([^/]+)/(.*) { 
    try_files $uri @redirect; 
} 
location @redirect { 
    return 301 $scheme$http_host/docs$1$3; 
} 

如果不是你可以改变你的当前重写,假设你有5块捕捉,

/docs/$1/$2/$4$5 

最后2文件+分机

+0

已经这样做了,但没有运气。是的,我想重定向。增加了一些关于重定向的信息。 – Hariadi

+0

查看编辑答案 –

+0

感谢AbuShady。我也更喜欢动态的方式,但是两个都不行。现在,我对Apache位置/文档/使用'proxy_pass',并使用'RedirectMatch permanent ^/docs /([A-Za-z0-9 - ] +)/([A-Za-z0-9-] +)[(A-Za-z0-9 - ] +)/([A-Za-z0-9 - ] +)。pdf $/docs/$ 1/$ 2/$ 4. $ 5' in'.htaccess' – Hariadi