support for canonical URLs in bloggart
I was scratching my head on how to do this, now that mod_rewrite (Apache or nginx or otherwise) isn't available.
Some googling threw up this post. Myself, I felt that using os.environ
, although not incorrect, wasn't very pretty.
Here's a decorator that uses webapp.Request
instead:
def canonical_redirect(func):
def _dec(self, path):
if not self.request.host == config.host:
self.redirect("%s://%s%s" % (self.request.scheme, config.host, path), True)
else:
func(self, path)
return _dec
I also choose to apply this only to the static handler in static.py
, since that's where most "public" requests for the site will go to.
Get it in your bloggart setup in my rc/canonical branch.