Recently I needed to add a large number of redirects to wagtail according to a specific pattern, because of bad links that were created owing to some bad parsing of /feed/ URLs. Redirects in wagtail use the wagtail.contrib.redirects.models.Redirect model, and this is a quick and dirty script to automatically add them.
Full documentation for redirects can be found here.
from wagtail.contrib.redirects.models import Redirect urls_txt = """https://www.mycanadapayday.com/blog/4-habits-of-millionaires-canadians-should-knowfeed/ https://www.mycanadapayday.com/blog/5-creative-ways-to-save-during-holiday-travelfeed/ https://www.mycanadapayday.com/blog/5-everyday-ways-to-save-when-you-buy-online-and-in-real-timefeed/ https://www.mycanadapayday.com/blog/7-new-ways-to-pay-off-your-debt-fasterfeed/ https://www.mycanadapayday.com/blog/7-ways-you-can-rent-even-with-bad-creditfeed/ https://www.mycanadapayday.com/blog/you-can-celebrate-canada-day-on-a-family-friendly-budgetfeed/""" def main(): urls = urls_txt.split('\n') for url in urls: if 'feed' not in url: continue newurl = re.sub('feed/$', '', url) print('redir', url, 'to', newurl) old_path = re.sub(r'https://www.mycanadapayday.com', '', url) old_path = re.sub(r'/$', '', old_path) existing = Redirect.objects.filter(old_path=old_path).first() if existing: print('already done', url) else: print('making new redirect for', old_path, 'to', newurl) redirect = Redirect( old_path=old_path, is_permanent=True, redirect_link=newurl, ) redirect.save()
And as you can see, the old link is now redirected to this correct page on saving money.