2012-11-03 3 views
5

Je viens de passer de EE 1 à EE 2 et je suis aux prises avec certains des changements. Par exemple, le fait que EE ne produise plus de barre oblique finale sur ses URLs fait un gâchis de beaucoup de mes liens où j'avais dépendu de constructions comme EE généré url + segment supplémentaire. Trouver et éditer tous les endroits où j'ai fait cela serait un petit cauchemar compte tenu de la taille et de la configuration de mon site. Existe-t-il un moyen de pirater EE pour récupérer l'ancien comportement?Récupérer la barre oblique finale dans ExpressionEngine 2?

+0

pouvez-vous expliquer un peu plus "constructions comme EE généré url + segment supplémentaire"? – GDmac

+0

Par exemple, j'ai rencontré un problème avec un modèle dans lequel j'utilisais le module Tags et j'avais besoin de configurer un lien comme celui-ci: "{path = 'Characters/Season'}/{websafe_tag} /". A l'origine, je n'avais pas besoin du/before {websafe_tag} car la première partie de l'URL était générée avec une barre oblique. J'ai donc dépendu de cela dans beaucoup de cas. –

+1

On dirait que {path =} et {url_title_path} s'appuient sur '$ this-> EE-> functions-> create_url ($ path)', ce qui pourrait être un endroit pour hacher une barre oblique supplémentaire. Cependant, je recommanderais une recherche et remplacez dans les modèles ci-dessus le noyau de piratage EE. – GDmac

Répondre

0

Il existe une solution .htaccess à cela, que j'ai utilisé dans mes anciens sites EE à cause de ce problème exactement.

Ajouter slash

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

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

Cependant, étant donné qu'il est là par défaut dans EE2, vous voudrez peut-être faire le contraire et enlever la barre oblique par .htaccess vous n'avez donc pas à ajouter/supprimer/quoi que ce soit manuellement. Si vous décidez que, voici le code:

Supprimer slash

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

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

+0

Le problème n'est pas tellement à la fin des URL, malheureusement, c'est quand je me retrouve avec une barre oblique finale manquante à l'intérieur d'une URL. J'ai posté un exemple dans un commentaire précédent qui, je l'espère, illustre ce que je veux dire. La solution .htaccess semble idéale pour normaliser la fin des URL pour avoir ou non une barre oblique, mais il ne semble pas qu'elle puisse résoudre les barres obliques manquantes dans les URL. –

6

Pour certains l'ajout de slash mentionné pourrait provoquer des conflits avec certaines formes. Ajout de ce qui suit pour vérifier si la requête est un GET pourrait être plus sûr.

# 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

J'ai finalement eu le temps de tester cela et je suis un peu mystifié sur la façon dont cela fonctionne réellement. Avec cela ajouté à mon. Htaccess, si je clique sur un lien sur une de mes pages, la nouvelle page se charge toujours sans une barre oblique. –

Questions connexes