2012-01-16 10 views
5

Ho un'app django che ha/alla fine di ogni URL conf. Esempio:Fai funzionare gli URL Django con o senza/

# user home page 
(r'^home/$', 'user_home_page'), 

Tuttavia, sto notando questo sta causando un sacco di reindirizzamenti sul mio server, perché quando la gente non aggiungere il /, li reindirizza. C'è un modo per farla accettare sia senza un redirect ad eccezione di fare:

# user home page 
(r'^home$', 'user_home_page'), 
(r'^home/$', 'user_home_page'), 

o dovrei evitare confs URL del genere?

risposta

7

Mentre è possibile accettare sia senza fare un redirect utilizzando:

(r'^home/?$', 'user_home_page'), 

non è delle migliori pratiche SEO, perché sembrerà di avere contenuti duplicati e vostri colpi verrà diviso tra le due pagine.

2

dovrei evitare confs URL del genere?

Sì. Django lo gestisce già per te.

vedere questo: https://docs.djangoproject.com/en/1.3/ref/middleware/#module-django.middleware.common

Se APPEND_SLASH è vero e l'URL iniziale non si esaurisce con una barra, e non si trova nel URLconf, poi un nuovo URL è formato da aggiungendo un tagliare alla fine. Se questo nuovo URL viene trovato in URLconf, , Django reindirizza la richiesta a questo nuovo URL. In caso contrario, l'URL iniziale viene elaborato come al solito.

5

È possibile modificare l'impostazione APPEND_SLASH Django, non l'ho mai usata prima.

Ci si potrebbe chiedere cosa succede se qualcuno richiede l'URL/ciao (cioè senza una barra finale). Poiché il nostro URLpattern richiede una barra finale , quell'URL non corrisponderebbe. Tuttavia, per impostazione predefinita, qualsiasi richiesta a un URL che non corrisponde a un pattern URL e non termina con una barra verrà reindirizzato allo stesso URL con una barra finale. (Questa è regolata dall'impostazione APPEND_SLASH Django, che è coperto in Appendice D.)

Questa è stata scattata dal http://djangobook.com/en/2.0/chapter03/

0

È necessario assicurarsi utilizza l'applicazione/modo coerente, fare una scelta, che a utilizzare e 301 reindirizzare la variazione canaglia a quella canonica corretta.

Ci deve essere solo una versione di una pagina e nella maggior parte dei casi la soluzione corretta è il reindirizzamento 301 alla versione canonica.

In alcune situazioni con parametri aggiuntivi per il tracciamento è necessario definire anche un canonico nella testa.

Utilizzando URL coerenti all'interno della tua APP e sul Web in link che rimandano alla tua app, non avrai molti reindirizzamenti.

Problemi correlati