nginx重写以删除旧URL的日期路径

时间:2014-03-30 01:30:11

标签: regex nginx rewrite

我有一个问题,我正在尝试使用nginx从网址中删除一些遗留信息但是它是一个日期,但它始终遵循相同的格式:

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

要..

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

我想知道这是否可行?我自己一直试着写它,但我只是挑选出中间部分。这可以通过重写规则来实现吗?

感谢阅读!

2 个答案:

答案 0 :(得分:3)

经过一些游戏和测试后,我设法使用以下语句实现了这一目标:

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

第一部分与以下表达式匹配:

/blog/2013/01/01/

最后一个斜杠之后的任何内容都将用于构建新的URL,这与$ 4一起使用,因为$可用于引用each()前三个是年,月,日,最后一个匹配标题博客文章就是我用4美元的原因。

希望这有助于人们,感谢穆罕默德在评论中让我找到了正确的路线。

答案 1 :(得分:1)

你可以试试这个

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