2009-03-18 8 views
2

J'ai créé un site simple dans Django. Les URL que j'utilise sont http ::/www.example.com/nl/ et http://www.example.com/fr/.Comment rediriger une requête http avec apache/django

Mon Django urls.py a la ligne suivante:

(r '^ (Pnl | fr) /?', 'Example.views.index'),

En example.views.index Je vérifie le paramètre de langue. Si c'est "nl", je montre un template. Si c'est "fr", je montre un template différent.

Cela a fonctionné très bien. Maintenant, le client a fait deux urls différentes:

http://www.dutch.com/ et http://www.french.com/

Et enfin, je vais vous poser la question suivante:

est pour moi il y a un moyen d'utiliser les nouvelles urls sans changer mon code django? Je suppose que je peux dire à Apache de présenter la page http://www.example.com/nl/ lorsque l'utilisateur va à http://www.dutch.com/. Mais comment je fais ça? Et django pourra-t-il encore obtenir le paramètre 'language' de l'url?

Merci d'avance pour toute réponse.

+0

Il est important de noter qu'aller à http://www.dutch.com/nl/ n'est pas une option. –

+0

Donc, ce que vous voulez est de tout rediriger de http://www.dutch.com à http://www.example.com/nl/? – andi

+0

C'est exactement ce que je veux, andi. Il est également important que j'ai toujours accès au 'nl' dans Django. –

Répondre

2

Si vous pouvez utiliser les fichiers .htaccess sur http://www.dutch.com que vous pouvez utiliser la directive de redirection de apache comme si

redirectMatch 301 ^(.*)$ http://www.example.com/nl/ 

Cela va rediriger toutes les demandes envoyées à dutch.com à example.com/nl~~V~~plural~~3rd

Vous pouvez également utiliser

redirect 301 /index.html http://www.example.com/nl/ 

Ceci redirigera que « index.html » sur dutch.com à example.com/nl/~~V~~3rd (non e que le premier paramètre est un chemin et ne peut pas être une URL - non http://www)

+0

Cela semble que ce pourrait être ce dont j'ai besoin. Qu'est-ce que l'utilisateur verra cependant? L'url du navigateur va-t-il changer à www.example.com/nl ou restera-t-il sur dutch.com? –

+0

En outre, si la page index.html contient un lien vers '../fr/index.html', que se passera-t-il lorsque je clique dessus? Va-t-il aller à example.com/fr/index.html ou va-t-il donner une erreur puisque je ne peux pas aller sur un dossier sur dutch.com? –

+0

Oui, l'URL deviendra example.com/nl, donc la deuxième chose ne devrait pas poser de problème. L'utilisateur peut même ne pas remarquer s'il ne regarde pas l'URL. Le deuxième problème ne s'est pas produit. – andi

Questions connexes