2017-10-21 5 views
0

Ce que j'essaie d'accomplir, c'est que Apache serve tout le contenu sur mysite.com/ et que Django gère tout sous mydomain.com/signup et mydomain.com/login.Problèmes de configuration de Django/Apache2/mod_wsgi sans composant supplémentaire dans l'URL

Le problème est que l'utilisateur doit maintenant naviguer vers mydomain.com/mysite/signup ou mydomain.com/mysite/login pour que les choses fonctionnent. Je veux me débarrasser de la partie mysite des URL.

J'ai créé un projet avec

django-admin startproject signup mysite 
cd mysite 
django-admin startapp login 

J'ai fini avec cette structure de répertoires.

mysite 
├── login 
│   ├── __init__.py 
│   ├── admin.py 
│   ├── apps.py 
│   ├── migrations 
│   │   └── __init__.py 
│   ├── models.py 
│   ├── tests.py 
│   ├── urls.py 
│   └── views.py 
├── manage.py 
└── signup 
    ├── __init__.py 
    ├── settings.py 
    ├── urls.py 
    ├── views.py 
    └── wsgi.py 

Je les urlpatterns suivants dans votre inscription/urls.py

urlpatterns = [ 
    url(r'^signup/', views.index, name='index'), 
    url(r'^login/', include('login.urls')), 
    url(r'^admin/', admin.site.urls), 
] 

J'ai Apache installé et fonctionne mod_wsgi et ont cette WSGIScriptAlias ​​dans mon fichier hôte virtuel.

WSGIScriptAlias /mysite /usr/local/www/wsgi-scripts/mysite/signup/wsgi.py process-group=mysite.com 

Lorsque l'utilisateur se soit mydomain.com/mysite/signup ou mydomain.com/mysite/login tout fonctionne. Ce que je veux faire est de se débarrasser de la partie 'mysite' des URL ci-dessus afin que l'utilisateur doit juste parcourir mydomain.com/signup ou mydomain.com/login.

J'ai essayé

WSGIScriptAlias /signup /usr/local/www/wsgi-scripts/mysite/signup/wsgi.py process-group=mysite.com 
WSGIScriptAlias /login /usr/local/www/wsgi-scripts/mysite/signup/wsgi.py process-group=mysite.com 

Mais cela ne fonctionne pas parce que soit des bandes Apache ou mod_wsgi au large de la partie « inscription » ou « login » avant qu'il arrive à Django Django et pense juste que l'utilisateur est à la recherche pour '/'.

Des suggestions?

Merci

Répondre

0

Essayez d'utiliser:

WSGIScriptAlias /signup /usr/local/www/wsgi-scripts/mysite/signup/wsgi.py/signup process-group=mysite.com application-group=%{GLOBAL} 
WSGIScriptAlias /login /usr/local/www/wsgi-scripts/mysite/signup/wsgi.py/login process-group=mysite.com application-group=%{GLOBAL} 

Notez comment le point de montage est ajouté après wsgi.py. L'option application-group est également ajoutée pour vous assurer d'avoir seulement une instance de votre application Django dans le processus. L'autre manière est que tous les fichiers statiques soient gérés par Apache, avec tout le reste géré par l'application WSGI. Comment faire cela est documenté vers la fin de l'article « La directive Alias ​​Apache » dans:

+0

Exactement ce que je cherchais! Travaillé comme un charme. THX – JJF

0

Si vous ne voulez pas un préfixe, ne pas utiliser un.

WSGIScriptAlias//usr/local/www/.... 
+0

Je veux/par Apache – JJF

+0

alors vous voulez deux choses contradictoires. –

+0

/avec rien d'autre servi par Apache,/signup et/login servi par wsgi – JJF