2012-02-15 14 views
5

Sto provando a reindirizzare la root del sito Django al pannello di amministrazione di Django, e per lo più l'ho installato e funzionante. Tuttavia, ho notato che, a meno che non ci sia una barra finale nell'URL del progetto, i collegamenti nella pagina non includano la cartella del progetto, e invece provi a trovare le app nella root del sito.Reindirizzamento della root di Django al pannello di amministrazione

Quindi, dire che ho un progetto foo e un'app bar. Se visiti lo http://server/foo/ (con una barra finale), tutto funziona correttamente ei collegamenti nella pagina vanno a http://server/foo/bar. Tuttavia, se si visita http://server/foo, i collegamenti generati passano invece a http://server/bar, che genera un errore 404.

Se ho impostato il WSGIScriptAlias per puntare a /foo/ invece di /foo, darebbe un errore 404 se ho navigato a /foo. Ho provato a forzare una barra finale nella conf Apache con Redirect, ma finisco per generare un reindirizzamento ricorsivo (http://server/foo//////...). Non ho ancora provato a usare un file .htaccess, ma sospetto che possa accadere la stessa cosa.

ho provato la stessa cosa in urls.py, però:

url(r'^$', redirect_to, {'url': '/'}), # goes to server root http://server/ 
url(r'^$', redirect_to, {'url': 'foo/'}), # goes to http://server/foo/foo 
url(r'^$', redirect_to, {'url': '/foo/'}), # infinite redirect 

Ho provato anche semplicemente aggiungendo una barra per tutti gli URL Django in questo modo:

url(r'^(.*)/', include(admin.site.urls)) 

ma non riesce a corrispondere nulla tutto nella cartella principale del progetto (anche se se si accede all'app, sembra funzionare correttamente).

sto usando Apache 2.2 con mod_wsgi, qui è la configurazione:

Alias /static "C:/DJANGO~1/apps/django/django/contrib" 

<Directory 'C:/DJANGO~1/apps/django/django/contrib'> 
    Order allow,deny 
    Allow from all 
</Directory> 

WSGIScriptAlias /foo "C:/Djangostack/apps/django/scripts/django.wsgi" 

<Directory 'C:/Djangostack/apps/django/scripts'> 
    Order allow,deny 
    Allow from all 
</Directory> 

e questa è la urls.py che funziona per lo più:

urlpatterns = patterns('', 
    url(r'^', include(admin.site.urls)), 
) 

ho fatto in modo APPEND_SLASH è impostato su Vero, ma non sembra funzionare nella cartella del progetto root.

+0

Perché '/ foo' viene reindirizzato a'/bar'? Dove sta succedendo questo reindirizzamento? –

+0

Non è davvero '/ foo' essere reindirizzato a'/bar' - invece, gli url generati nella pagina vanno a '/ bar' invece di'/foo/bar'. – Hannele

risposta

1

Provare a impostare APPEND_SLASH su True nel numero settings.py. Ho avuto un problema simile e questo lo ha risolto per me. Si suppone che sia impostato su True, ma ho dovuto impostarlo esplicitamente.

+0

Sfortunatamente non è stato d'aiuto - funziona ovunque _ma la radice del progetto. – Hannele

+0

Quale 'urls.py' non funziona con questo? Nota che aggiungerà una barra solo se l'url non corrisponde a un modello * senza * la barra. – aganders3

+0

L'ho provato con 'r '^'', 'r '^ (. *) /'', E 'r '^ (. *)/$'', Ancora senza fortuna. Sospetto che ciò significhi che la configurazione deve avvenire in Apache o in qualche altra impostazione Django a livello di sistema. – Hannele

Problemi correlati