2014-01-09 40 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