Redirect 301, give the people what they want

Ce billet date de plusieurs années, ses informations peuvent être devenues obsolètes.

Il y a des jours où l'on touche du doigt la métaphysique de Pangloss et l'on se dit que tous les événements sont enchaînés dans le meilleur des mondes possibles. Explication : j'ai trouvé un moyen de rediriger les anciennes URLs des feeds et des posts du blog. Ahah, oui il m'en faut peu.

Pour les URLs des posts, j'avais laissé le mode QUERY_STRING sous DotClear. J'ai changé leur forme en recodant mon blog. Elles passent donc de /weblog/?post/2009/07/27/Faut-il-coder-en-HTML-5-en-2009 à /weblog/2009/07/27/faut-il-coder-en-html-5-en-2009 par exemple. La slugification de Django change un peu, elle dégage les accents par exemple, ce qui rend assez pénible l'écriture d'une RewriteRule dans Apache. J'ai eu la bonne idée de conserver le champ URL dans ma table des posts. Avec tous ces éléments j'ai pu écrire un petit bout de code qui se charge de faire une 301 vers les nouvelles URL des posts avec from django.http import HttpResponsePermanentRedirect :


# Redirect old DotClear URLs
if request.method == "GET":
    get = request.GET.keys()
    if get and 'post' in get[0]:
        url = get[0].replace('post/', '')
        try:
            p = Post.objects.get( url=url )
            url_redirect = reverse('blog_detail', args=[
                p.date_created.strftime('%Y'),
                p.date_created.strftime('%m'),
                p.date_created.strftime('%d'),
                p.slug
            ])
            return HttpResponsePermanentRedirect( url_redirect )
        except Post.DoesNotExist:
            pass

Pour les flux c'est Apache qui s'en charge :

RewriteEngine On
RewriteCond %{REQUEST_URI} /weblog/$
RewriteCond %{QUERY_STRING} ^feed/atom$
RewriteRule ^.*$ http://marcarea.com/weblog/feed/atom/posts? [L,R=301]

Et voilou, ça devrait rouler comme ça. C'est plus sympa pour tous ceux qui ont bookmarké ou blogmarké des posts ici. Mes URIs restent cools :)

#1 Romuald

27/08/2009 10:33

"Cool URIs don't change" =)

#2 Mali

13/09/2009 08:50

Sympa tes Url ;) et c'est vrai que 20h08 c'est la bonne heure à l'inspiration des posts de ouf ;)

@Bientôt

Avant Mon blog sous Django Après Google Chrome Frame

Tag Kemar Joint