Ouvrir la navigation secondaire

Ce billet a plus de deux ans. S'il contient des informations techniques elles sont peut être obsolètes.

Précédent Mon blog sous Django
Suivant Google Chrome Frame

Redirect 301, give the people what they want

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.09 10:33

"Cool URIs don't change" =)

#2

Mali

13.09.09 08:50

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

@Bientôt