2014-03-30 51 views
1

我有一個問題,我想使用nginx的從URL中刪除一些舊的信息。但是這是一個約會的日期路徑,但它總是遵循同樣的格式:nginx的重寫刪除舊有的網址

http://example.com/blog/xxxx/xx/xx/this-is-a-blog-post/ 

去..

http://example.com/blog/this-is-a-blog-post/ 

我不知道這是可能的嗎?我試着自己寫,但我在挑選中間部分時遇到了麻煩。這是可能的重寫規則?

感謝您的閱讀!

+0

這是一個WordPress的? –

+0

這不是沒有,URL結構在一段時間前已經改變了,但仍然看到人們擊中了舊的URL,並想知道是否有重寫規則的簡單修復。 – calabi

回答

1

你可以試試這個

rewrite /blog/[0-9]{4}(?:/[0-9]{2}){2}(?<new_uri>.*) /blog$new_uri last; 
+0

謝謝你,不幸的是它沒有工作,並返回一個錯誤 指令「重寫」沒有終止「;」 但我用你的例子與文檔結合起來,讓我沿着正確的路線,非常感謝你的幫助:) – calabi

+0

可能是因爲'{}'它需要寫成一個字符串,你可以回答說它不會工作,我會幫助,但很高興你最終得到它的工作 –

3

一些玩弄和測試中,我成功地做到這一點使用下面的語句之後:

/blog/2013/01/01/ 

rewrite "/blog/([0-9]{4})/([0-9]{2})/([0-9]{2})/(.*)" /blog/$4 permanent; 

第一部分下面的表達式匹配

最後一個斜槓後面的任何內容都將用於構建新的URL, s與$ 4一起使用,因爲$可以用來引用每個(),前三個是年,月,日,最終集合與博客帖子的標題相匹配,這就是爲什麼我使用了$ 4。

希望這有助於人們,這要感謝穆罕默德在評論中讓我接受了正確的方式。