我已开始将博客移至Octopress,但不幸的是,Jekyll的限制并不允许我使用缩写的月份名称作为永久链接。因此,我希望完全摆脱月和天位。
我已经在this article中读到您可以使用rack-rewrite来处理重定向,因为我正在使用Heroku来托管它。
那我怎么转:
这:example.com/journal/2012/jan/03/post-of-the-day/
进入:example.com/journal/2012/post-of-the-day/
额外积分:如果我有另一条将/blog/
重定向到/journal/
的规则,该规则是否仍会遵守上述规则?所以来自:
这:example.com/blog/2012/jan/03/post-of-the-day/
对此:example.com/journal/2012/jan/03/post-of-the-day/
最后:example.com/journal/2012/post-of-the-day/
感谢您提前协助。 :)
答案 0 :(得分:2)
我的第一个想法是抓住斜线之间的每个块然后只显示你想要的那些。
所以这样的事情会起作用:
// given example.com/blog/2012/jan/03/post-of-the-day/
r301 %r{\/blog\/(.*)\/(.*)\/(.*)\/(.*)\/$}, '/journal/$1/$4/'
以下是Rubular的链接,以显示我的意思http://rubular.com/r/La6rjrE5Hw
答案 1 :(得分:1)
您希望尽可能具体,因此您不会意外地重写在遇到新网址结构时会失败的其他内容。另请注意,我不知道机架重写,所以我在这一点上遵循redroot89的领先优势。
r301 %r{^\/(:blog|journal)\/([0-9]{4})\/[a-z]{3}\/[0-9]{2}\/(.*)\/$}, '/journal/$1/$2/
这只捕获了年份和slug,但通过更具体的模式找到了其余部分。通过包含(:blog|journal)
,您可以一次性重定向,而无需将两个重定向链接在一起。