Ajouter le slash de fin de dossier manquant (Slash Trailing)

Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics

NeoKoD
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 11
Inscription: 13 Déc 2003

Ajouter le slash de fin de dossier manquant (Slash Trailing)

Message le Sam Déc 13, 2003 15:37

Bonjour,

Je suis nouveau sur le forum, j'en profite pour vous saluer :)

Je débute avec l'UR et j'aimerais faire une régle pour ajouter les '/' de fin qui manquerais sur les noms de dossier.

Exemple :
http://site.com/accueil
en http://site.com/accueil/

J'ai voulu partir de l'exemple du site Apache :
http://httpd.apache.org/docs-2.0/misc/rewriteguide.html
( Section Trailing Slash Problem )

En cherchant sur le forum j'ai trouvé un thread correspondant mais la personne n'avait pas trouvé de solution et c'était orienté vers une solution php détectant l'erreur 404 ce que je trouve dommage..

J'ai tenté plusieurs règles dont celle du site Apache :
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+[^/])$ $1/ [R]
Celle-ci ne fonctionne pas ( mod_rewrite: maximum number of internal redirects reached. Assuming configuration error. Use 'RewriteOp
tions MaxRedirects' to increase the limit if neccessary.
)

J'ajouterais par la suite une condition pour exclure de cette régle les urls finissant par un nom de fichier mais pour l'instant j'aimerais déjà faire fonctionner la redirection du "/dossier" en "/dossier/"

Pour infos j'ai d'autres régles qui fonctionnent bien et je comprend les expressions régulières.

Merci d'avance pour votre aide


Remi L.
WRInaute passionné
WRInaute passionné
 
Messages: 1063
Inscription: 6 Sep 2003

Message le Sam Déc 13, 2003 16:50

Mais pourquoi veux-tu toi-même ajouter le slash ?
Apache le fait tout seul, comme un grand, non ?

NeoKoD
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 11
Inscription: 13 Déc 2003

Message le Sam Déc 13, 2003 17:05

Apache ne le fait pas par défaut, a moins de créer des Alias pour chaque dossier du genre "Alias accueil accueil/" ..

Mon but est de mettre en place cette conditions dans le .htaccess car je n'aurais pas la main sur le fichier de config httpd.conf

Y a une chose étrange, théoriquement, Apache reconnait si le fichier demandé n'est pas un fichier mais un dossier et doit renvoyer le code d'erreur 301. Cependant lorsque j'ajoute ces 2 lignes dans mon .htaccess :
Code: Tout sélectionner
ErrorDocument 404 /404.html
ErrorDocument 301 /301.html


Le fichier 301 n'est jamais appelé dans le cas d'un Trailing Slash manquant.. pourtout les 404 fonctionnes bien.


Remi L.
WRInaute passionné
WRInaute passionné
 
Messages: 1063
Inscription: 6 Sep 2003

Message le Sam Déc 13, 2003 18:16

http://httpd.apache.org/docs/mod/mod_dir.html

Et Apache génère effectivement dans ce cas un 301, mais (en tout cas chez OVH je ne sais pas ailleurs) il me semble bien que tu ne peux pas détourner l'erreur...

NeoKoD
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 11
Inscription: 13 Déc 2003

Message le Dim Déc 14, 2003 0:24

Apparement le code d'erreur n'est pas détournable, cependant ne peut-on pas faire une règle qui convertit l'url qui n'a pas de slash final tout simplement ?

Si je met juste ça :
Code: Tout sélectionner
RewriteRule (.+)$ $1/ [L]


Je devrais avoir pour toutes les urls un '/' terminal en plus non ?
J'ai a chaque fois un message m'indiquant qu'il boucle ( maximum internal redirect )
Le coup du [L] ne sert-il pas a lui dire de s'arrêter a cette régle ?


Y a t-il des tutoriaux en français sur l'UR plus détaillé que ceux de WRI ( qui sont très bon mais pas assez précis pour mon cas )

Merci

nikoshr
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 320
Inscription: 10 Juil 2003

Message le Dim Déc 14, 2003 9:32

Les règles que tu utilises, elles sont dans un httpd.conf ou un .htaccess ? Parce qu'il y a une subtilité avec le .htaccess : une fois que l'URL a été réécrite, elle subit à nouveau tout le traitement d'interprétation et repasse donc par le l'URL Rewriting. S'il n'y a pas de condition d'arrêt adéquate, on boucle. Sinon, il ne reste plus qu'à mettre en place un log du rewriting et voir ce que ca donne.

Sur
Code: Tout sélectionner
RewriteRule (.+)$ $1/ [L]
tu manipules l'URL uniquement en interne, donc rien de visible pour le client (navigateur).

NeoKoD
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 11
Inscription: 13 Déc 2003

Message le Dim Déc 14, 2003 9:50

Hummm ok je vois,
Etrange ce comportement, je pensais que l'url été soumises aux autres conditions si on avait pas mis le [L] mais je ne savais pas qu'elle repasserais une seconde fois dans le .htaccess ..
J'ai vu sur la doc apache une directive de log, je vais m'en servir c'est une bonne idée :)

Merci

nikoshr
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 320
Inscription: 10 Juil 2003

Message le Dim Déc 14, 2003 10:12

En fait, il semblerait que l'URL Rewriting (et le reste d'ailleurs) dans les .htaccess soit une véritable Bidouille™ , voir la doc de l'URL Rewriting, section Internal Processing/API phases, point 2. Apparemment, ils sont les premiers étonnés que ca marche. Et pour pouvoir activer les logs, il faut avoir accès au httpd.conf

Code: Tout sélectionner
RewriteLog /chemin/pour/les/logs/rewrite.log
RewriteLogLevel 9

NeoKoD
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 11
Inscription: 13 Déc 2003

Message le Dim Déc 14, 2003 10:23

Ok, j'avais déjà jetté un oeil sur cette page, mais j'ai pas tout pigé.
Pour le RewriteLog en effet cela ne marchait pas dans le .htaccess et en le foutant dans le httpd.conf j'ai pu les faire fonctionner.

Merci


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Formation recommandée sur ce thème :

Formation URL Rewriting et sites dynamiques : apprenez comment mettre en place la réécriture d'URL, comment optimiser vos URL et profiter de vos pages dynamiques pour booster votre référencement. Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité