2017-10-21 3 views
0

Was ich erreichen möchte, ist, dass Apache alle Inhalte auf mysite.com/ bereitstellt und Django alles unter mydomain.com/signup und mydomain.com/login behandelt.Probleme bei der Konfiguration von Django/Apache2/mod_wsgi ohne zusätzliche Komponente in der URL

Das Problem ist, dass der Benutzer im Moment zu mydomain.com/mysite/signup oder mydomain.com/mysite/login für Dinge arbeiten muss. Ich möchte den mysite Teil der URLs loswerden.

habe ich ein Projekt mit

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

ich mit dieser Verzeichnisstruktur endete.

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 

Ich habe folgende urlpatterns in die Registrierung/urls.py

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

Ich habe Apache mod_wsgi installiert und arbeiten und haben diese WSGIScriptAlias ​​in meiner virtuellen Host-Datei.

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

Wenn der Benutzer alles funktioniert entweder mydomain.com/mysite/signup oder mydomain.com/mysite/login geht.

Was ich tun möchte, ist loswerden der 'mysite' Teil der oben genannten URLs, so dass der Benutzer nur zu mydomain.com/signup oder mydomain.com/login suchen muss.

Ich habe versucht

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 

Aber das funktioniert nicht, weil entweder Apache oder mod_wsgi Streifen aus der ‚Anmeldung‘ oder ‚Login‘ Teil, bevor es zu Django Django bekommt und denkt nur den Benutzer suchen zum '/'.

Irgendwelche Vorschläge?

Dank

Antwort

0

Versuchen Sie es mit:

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} 

Beachten Sie, wie der Mount-Punkt nach wsgi.py hinzugefügt wird. Die Option application-group wird ebenfalls hinzugefügt, um sicherzustellen, dass Sie nur eine Instanz Ihrer Django-Anwendung erhalten.

Die andere Möglichkeit besteht darin, dass alle statischen Dateien von Apache verarbeitet werden und alles andere von der WSGI-Anwendung gehandhabt wird. Wie dies in Richtung Ende des Abschnitts dokumentiert ist ‚Die Apache Alias-Richtlinie‘ in:

+0

Genau das, was ich gesucht habe! Lief wie am Schnürchen. Danke – JJF

0

Wenn Sie kein Präfix wollen, verwenden Sie nicht ein.

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

Ich mag/serviert von Apache – JJF

+0

Dann mögen Sie zwei widersprüchliche Dinge. –

+0

/mit nichts anderem von Apache gedient,/Anmeldung und/Login von WSGI – JJF

Verwandte Themen