2011-04-13 4 views
2

J'ai un site Django, qui travaille sur mod_wsgi et Apache. (par exemple, example.com) J'ai fait un sous-domaine (par exemple, info.example.com) et je veux le pointer vers l'application dans le projet existant. Est-il possible, que j'ai un fichier urls.py, et example.com/info et info.example.com pointent vers la même vue dans le projet Django (sans dupliquer l'ensemble du projet dans un répertoire différent)?Pointant un sous-domaine vers une URL spécifique dans Django

Si oui, comment puis-je le faire? Actuellement la configuration de example.com virtalhost pour le projet existant ressemble à ceci:

<VirtualHost 12.34.56.78:80> 
    ServerName example.com 
    ServerAlias www.example.com 

    DocumentRoot /srv/www/Example/Pub_html 

    WSGIScriptAlias//srv/www/Example/example.wsgi 
    <Directory /srv/www/Example/Example> 
     Order allow,deny 
     Allow from all 
    </Directory> 

    Alias /robots.txt /srv/www/Example/robots.txt 
    Alias /favicon.ico /srv/www/Example/favicon.ico 
    .... 
</VirtualHost> 

Merci d'avance!

MISE À JOUR: J'ai effectué une solution rapide en créant un autre projet Django qui partage les tables de base de données et le dossier modèle avec le dossier existant. Cela fonctionne, mais ce n'est pas vraiment sec :)

+0

Vous voudrez probablement ajouter une RewriteRule, qui transformerait en interne info.example.com en exemple.com/info. Ceux-ci sont notoirement difficiles à écrire, cependant. –

Répondre

1

Je le ferais avec un proxy inverse, je suppose. Si vous avez mod_proxy et mod_proxy_html disponibles, essayez quelque chose comme ceci:

<VirtualHost 12.34.56.78:80> 
    ServerName info.example.com 

    ProxyPass  /http://example.com/info 

    SetOutputFilter proxy-html 
    <Location /> 
     ProxyPassReverse /info/ 
     ProxyHTMLURLMap /info//
    </Location> 
    ProxyHTMLURLMap http://example.com/info/
</VirtualHost> 

les détails peuvent ne pas être tout à fait raison, alors laissez-moi savoir si vous ne pouvez pas le faire fonctionner.

+0

Je l'ai fait fonctionner avec juste la ligne ProxyPass. Avec le fichier complet, l'erreur 330 s'affichait dans google chrome et j'avais le proxy [error]: ap_get_scoreboard_lb (1) échouait dans l'enfant 14565 pour le proxy du worker: reverse; [erreur] proxy: ap_get_scoreboard_lb (0) a échoué dans l'enfant 14565 pour l'opérateur http://example.com/info – skazhy

Questions connexes