2012-11-03 8 views
5

Ich habe gerade von EE 1 zu EE 2 aktualisiert und ich habe mit einigen der Änderungen zu kämpfen. Zum Beispiel macht die Tatsache, dass EE nicht länger einen abschließenden Schrägstrich auf seinen URLs ausgibt, eine Menge meiner Links, wo ich auf Konstruktionen wie EE generierte URL + zusätzliches Segment angewiesen war. Das Finden und Bearbeiten aller Orte, an denen ich das gemacht habe, wäre ein kleiner Albtraum, wenn man die Größe und das Setup meiner Seite bedenkt. Gibt es eine Möglichkeit, EE zu hacken, um das alte Verhalten wieder zu bekommen?Den abschließenden Schrägstrich in ExpressionEngine 2 zurückgeben?

+0

Können Sie ein bisschen mehr "Konstruktionen wie EE erzeugte URL + zusätzliches Segment" erklären? – GDmac

+0

Zum Beispiel hatte ich ein Problem mit einer Vorlage, wo ich das Modul Tags verwendete und ich musste einen Link wie folgt einrichten: "{path = 'Characters/Season'}/{websafe_tag} /". Ursprünglich brauchte ich das/vor {websafe_tag} nicht, da der erste Teil der URL mit einem Schrägstrich generiert wurde. Daher war ich in vielen Fällen davon abhängig. –

+1

Sieht so aus, als ob {path =} und {url_title_path} auf '$ this-> EE-> functions-> create_url ($ path)' basieren, also könnte es ein Ort sein, um einen zusätzlichen Schrägstrich zu hacken. Allerdings würde ich eine Suche empfehlen und ersetzen Sie in den Vorlagen über Hacking Core EE. – GDmac

Antwort

0

Es gibt eine .htaccess-Lösung für diese, die ich in meinen älteren EE-Sites wegen dieses Problems genau verwendet habe.

Add Schrägstrich

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

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

Da es jedoch in EE2 standardmäßig gibt es, könnte man das Gegenteil tun wollen und entfernen den Schrägstrich über .htaccess Sie müssen also nicht manuell hinzufügen/löschen/was auch immer. Wenn Sie auf dem entscheiden, hier ist der Code:

entfernen Nachgestellte Slash

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

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

+0

Das Problem ist nicht so sehr am Ende der URLs, leider ist es, wenn ich mit einem fehlenden Schrägstrich innerhalb einer URL enden. Ich habe ein Beispiel in einem früheren Kommentar gepostet, der, wie ich hoffe, illustriert, was ich meine. Die .htaccess-Lösung klingt hervorragend, um das Ende von URLs zu normalisieren, die entweder einen Schrägstrich haben oder nicht, aber es scheint nicht, als ob es die fehlenden Schrägstriche in URLs lösen könnte. –

6

Für einigen Zusatz des Schrägstrichs erwähnt könnten Konflikte mit einigen Formen verursachen. Wenn Sie Folgendes hinzufügen, um zu prüfen, ob die Anforderung ein GET ist, ist dies möglicherweise sicherer.

# 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

Ich hatte endlich Zeit, dies zu testen und ich bin ein wenig verwirrt, wie das eigentlich funktioniert. Wenn ich einen Link auf einer meiner Seiten anklicke, wird die neue Seite immer noch ohne einen Schrägstrich geladen. –

Verwandte Themen