2012-11-03 17 views
5

Ho appena effettuato l'aggiornamento da EE 1 a EE 2 e sono in difficoltà con alcune modifiche. Ad esempio, il fatto che EE non produca più una barra finale sui suoi URL sta facendo un casino di molti dei miei link in cui ero dipendente da costruzioni come l'url generato da EE + il segmento aggiuntivo. Trovare e modificare tutti i luoghi in cui l'ho fatto sarebbe stato un piccolo incubo considerando le dimensioni e la configurazione del mio sito. C'è un modo per hackerare EE per recuperare il vecchio comportamento?Ripristinare la barra finale in ExpressionEngine 2?

+0

puoi spiegare un po 'di più "costruzioni come URL generato da EE + segmento aggiuntivo"? – GDmac

+0

Ad esempio, ho riscontrato un problema con un modello in cui stavo utilizzando il modulo Tag e avevo bisogno di impostare un collegamento come questo: "{path = 'Caratteri/Stagione'}/{websafe_tag} /". In origine, non avevo bisogno del/before {websafe_tag} poiché la prima parte dell'URL è stata generata con una barra finale. Quindi sono dipeso da questo in molti casi. –

+1

Sembra che {path =} e {url_title_path} si basino su '$ this-> EE-> functions-> create_url ($ path)', in modo che possa essere un posto in cui inserire una barra in più. Comunque raccomando una ricerca e sostituire nei modelli sopra core EE di hacking. – GDmac

risposta

0

C'è una soluzione .htaccess a questo, che ho usato nei miei vecchi siti EE a causa di questo problema esattamente.

Add slash

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$ 
RewriteRule ^(.*)$ $1/ [L,R=301] 

Fonte: http://devot-ee.com/articles/item/simple-htaccess-for-expressionengine-sites

Tuttavia, dal momento che è lì per impostazione predefinita in EE2, si potrebbe desiderare di fare il contrario e rimuovere la barra finale tramite .htaccess quindi non devi aggiungere/cancellare/qualsiasi cosa manualmente. Se si decide su questo, ecco il codice:

Rimuovere slash

RewriteCond %{HTTP_HOST} !^\.yoursite\.com$ [NC] 
RewriteRule ^(.+)/$ http://%{HTTP_HOST}/$1 [R=301,L] 

Fonte: http://ee-spotlight.com/tips/a_standard_htaccess_file_with_expressionengine

+0

Il problema non è tanto alla fine degli URL, sfortunatamente, è quando finisco con una barra finale mancante all'interno di un URL. Ho pubblicato un esempio in un precedente commento che spero illustri cosa intendo. La soluzione .htaccess suona alla grande per normalizzare la fine degli URL o avere o meno una barra finale, ma non sembra che possa risolvere le barre mancanti all'interno degli URL. –

6

Per qualche aggiunta allo slash accennato potrebbe causare conflitti con alcune forme. Aggiungere quanto segue per verificare se la richiesta è un GET potrebbe essere più sicuro.

# Add a trailing slash to paths without an extension 
RewriteCond %{THE_REQUEST} ^GET 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$ 
RewriteRule ^(.*)$ $1/ [L,R=301] 
+0

Ho finalmente avuto il tempo di testare questo e sono un po 'confuso su come funzioni effettivamente. Con l'aggiunta al mio .htaccess, se faccio clic su un collegamento in una delle mie pagine, la nuova pagina viene caricata senza una barra finale. –

Problemi correlati