2012-02-15 17 views
5

Estoy tratando de redirigir la raíz del sitio de Django al panel de administración de Django, y en su mayoría lo he puesto en funcionamiento. Sin embargo, me he dado cuenta de que a menos que haya una barra inclinada en la URL del proyecto, los enlaces en la página no incluyen la carpeta del proyecto, y en su lugar intentan encontrar las aplicaciones en la raíz del sitio.Redireccionando la raíz de Django al panel de administración

Entonces, supongo que tengo un proyecto foo, y una aplicación bar. Si visita http://server/foo/ (con una barra inclinada), todo funciona bien, y los enlaces de la página van al http://server/foo/bar. Sin embargo, si uno visita http://server/foo, los enlaces generados van a http://server/bar, lo que genera un error 404.

Si fijo el WSGIScriptAlias para apuntar a /foo/ en lugar de /foo, daría un error 404 si navegaba a /foo. Intenté forzar una barra inclinada en el conf Apache con Redirect, pero acabo generando una redirección recursiva (http://server/foo//////...). Todavía no he intentado utilizar un archivo .htaccess, pero sospecho que podría suceder lo mismo.

he intentado lo mismo en urls.py, sin embargo:

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 

que también trató simplemente añadiendo una barra a todas las URL de Django, así:

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

Pero no coincide con nada todo en la carpeta raíz del proyecto (aunque si navega hacia la aplicación, eso parece funcionar bien).

estoy usando Apache 2.2 con mod_wsgi, aquí es la configuración:

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> 

Y este es el urls.py que en su mayoría funciona:

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

me he asegurado APPEND_SLASH se establece en Es cierto, pero no parece funcionar en la carpeta del proyecto raíz.

+0

¿Por qué '/ foo' se redirige a'/bar'? ¿Dónde está sucediendo esta redirección? –

+0

No es realmente '/ foo' el que se redirecciona a'/bar', sino que las URL generadas en la página van a '/ bar' en lugar de'/foo/bar'. – Hannele

Respuesta

1

Intente configurar APPEND_SLASH en True en su settings.py. Tuve un problema similar y esto lo solucionó. Se supone que debe establecerse en True, pero tuve que configurarlo de forma explícita.

+0

Desafortunadamente eso no ayudó, funciona en todas partes _pero_ la raíz del proyecto. – Hannele

+0

¿Con qué 'urls.py' no funciona esto? Tenga en cuenta que solo agregará una barra inclinada si la url no coincide con un patrón * sin * la barra inclinada. – aganders3

+0

Lo intenté con 'r '^'', 'r '^ (. *) /'', Y 'r '^ (. *)/$'', Todavía no tuve suerte. Sospecho que eso significa que la configuración debe ocurrir en Apache, o en alguna otra configuración de Django en todo el sistema. – Hannele

Cuestiones relacionadas