2012-11-03 11 views
5

Właśnie uaktualniłem z EE 1 do EE 2 i zmagam się z niektórymi zmianami. Na przykład fakt, że EE nie wyprowadza już końcowego ukośnika na swoich adresach URL, powoduje bałagan wielu linków, w których polegałem na konstrukcjach takich jak adres URL generowany przez EE + dodatkowy segment. Znajdowanie i edytowanie wszystkich miejsc, w których to zrobiłem, byłoby małym koszmarem, biorąc pod uwagę rozmiar i konfigurację mojej witryny. Czy istnieje sposób na zhackowanie EE, aby odzyskać stare zachowanie?Uzyskiwanie wstecznego ukośnika w ExpressionEngine 2?

+0

Czy możesz wyjaśnić nieco więcej "konstrukcji, takich jak generowany adres URL + dodatkowy segment"? – GDmac

+0

Na przykład, miałem problem z szablonem, w którym korzystałem z modułu Tagi i musiałem skonfigurować łącze takie jak to: "{path =" Postacie/sezon "}/{websafe_tag} /". Początkowo nie potrzebowałem/before {websafe_tag}, ponieważ pierwsza część adresu URL została wygenerowana z końcowym ukośnikiem. Tak więc od tego zależałem w wielu przypadkach. –

+1

Wygląda na to, że {path =} i {url_title_path} polegają na '$ this-> EE-> functions-> create_url ($ path)', więc może to być miejsce na zhakowanie dodatkowego slasha. Jednak polecam wyszukiwanie i zamień w szablonach powyżej hakowania rdzenia EE. – GDmac

Odpowiedz

0

Istnieje rozwiązanie .htaccess do tego, które używam w moich starszych witrynach EE z powodu tego problemu dokładnie.

dodawania spływu ukośnik

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

Źródło: http://devot-ee.com/articles/item/simple-htaccess-for-expressionengine-sites

Jednakże, ponieważ jest tam domyślnie w EE2, może chcesz zrobić odwrotnie i usunąć ten ukośnik poprzez .htaccess więc nie musisz ręcznie dodawać/usuwać/cokolwiek. Jeśli zdecydujesz się na to, oto kod:

Usuwanie początkowych Slash

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

Źródło: http://ee-spotlight.com/tips/a_standard_htaccess_file_with_expressionengine

+0

Problem tkwi nie tyle na końcu adresów URL, co niestety, kiedy kończę z brakującym końcowym ukośnikiem wewnątrz adresu URL. Przedstawiłem przykład we wcześniejszym komentarzu, który mam nadzieję ilustruje, co mam na myśli. Rozwiązanie .htaccess brzmi wspaniale, ponieważ normalizuje koniec adresów URL tak, by zawierały końcowy slash lub nie, ale nie wydaje się, aby mogło rozwiązać brakujące ukośniki w adresach URL. –

6

jakiegoś Ponadto ukośnik wspomnianym może powodować konflikty z niektórymi formami. Dodanie następujących elementów, aby sprawdzić, czy żądanie jest GET, może być bezpieczniejsze.

# 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

W końcu miałem czas, aby to przetestować i jestem trochę zaskoczony, jak to działa. Wraz z nim dodany do mojego .htaccess, jeśli kliknę link na jednej z moich stron, nowa strona wciąż się ładuje bez ukośnego slasha. –

Powiązane problemy