[résolu] comment remplacer url avec accents dans htaccess

JanoLapin

WRInaute accro
Bonsoir à tous,

un email parti trop vite comprend un accent dans le code d'ne url, ce qui mène évidemment à une 404.

J'ai essayé de mettre en place une redirection via .htaccess sans y arriver
Code:
Redirectpermanent /itinéraire/ http://example.org/itineraire/

Quel est le bon code à utiliser, SVP ?

Merçi de votre aide
 

JanoLapin

WRInaute accro
Re: comment remplacer url avec accents dans htaccess

j'ai essayé aussi avec la syntaxe suivante, là encore sans résultat
Code:
Redirectpermanent /itin%C3%A9raire/ http://example.org/itineraire/

j'avoue y perdre mon lorem ipsum. Si une âme charitable voulait bien m'indiquer la syntaxe à utiliser pour rediriger /itinéraire/ vers /itineraire/

Merçi de votre aide

Janolapin
 

YoyoS

WRInaute accro
Re: comment remplacer url avec accents dans htaccess

t'as regardé sur google ? Tu dois pas être le premier au monde à être dans ce cas si ? ;p Fin j'sais pas j'ai tapé accent htacces y a eu une chiée de résultats ^^
 

Marie-Aude

WRInaute accro
Re: comment remplacer url avec accents dans htaccess

Et la solution de bourrin de créer un fichier itinéraire avec une redirection php dans l'en tête ?
 

JanoLapin

WRInaute accro
Re: comment remplacer url avec accents dans htaccess

@YoyoS: oui, j'ai regardé et j'ai trouvé tout un tas de trucs, dont aucun n'a marché chez moi (remplacer la lettre par un caractère universel, essayer des règles de Rewriterule ou des Rewritematch
C'est aggravé par le fait que je ne comprends pas la syntaxe des regex... alors forcémement ça n'aide pas :mrgreen:

@Marie-Aude: oui, j'ai essayé, mais je n'arrive pas à faire la redirection vers ce fichier itinéraire.php :twisted:

Il est tard je vais me coucher...; j'espère trouver la solution demain
 

Dolph

WRInaute impliqué
Re: comment remplacer url avec accents dans htaccess

JanoLapin a dit:
@Marie-Aude: oui, j'ai essayé, mais je n'arrive pas à faire la redirection vers ce fichier itinéraire.php :twisted:
La redirection, tu la fais après...

Si ton url est ndd/itinéraire/ (sans extension)
Tu créé un dossier itinéraire dans le quel tu met un index.php
Dans l'index.php tu met un 310 vers le bon fichier.
 

Blount

WRInaute impliqué
Re: comment remplacer url avec accents dans htaccess

En théorie, ce devrait être possible de catcher les caractères accentués. Comme je n'ai pas le temps de faire un test, voici une solution temporaire :
Code:
RewriteRule ^itin[^e]raire/? http://example.org/itineraire/ [L,R=301]

On dit simplement que si le caractère n'est pas un « e », on redirige. Ça prend évidemment n'importe quel caractère, mais ce n'est pas important dans ton cas.
Le « ? » permet de mettre dans l'adresse soit « itinéraire » ou « itinéraire/ ».
 

JanoLapin

WRInaute accro
Re: comment remplacer url avec accents dans htaccess

Merçi à tous (tes) de vos réponses.

Chez moi, la solution de redirection propsoée par Blount ne marche pas, sans que j'arrive à trouver pourquoi. En revanche, la méthode "brutale" de redirection par répertoire a bien marché.


Néanmoins, il y a plusieurs choses qui m'intriguent:

* quelle différence entre redirectMatch 301 et Redirectpermanent (on voit les deux sur des tutos en ligne) ?

* l'url example.org/itinéraire/ apparaîtra certes comme telle la barre d'adresse de navigateurs modernes (testé IE9, FF4, Opera11) mais elle sera traduite par example.org/itin%C3%A9raire/
Or la méthode adoptée, (cf. plus haut Marie-Aude + Dolph) consiste à créer un répertoire /itinéraire avec un index.php de redir. Donc de ne aps tenir compte de la traduction de l'url apr les navigateurs... et pourtant ça marche

J'y perds mon latin, avec cette histoire. C'ets marrant de voir qu'un petit truc , qu'on pensait maitriser convenablement, ouvre finalement une faille beaucoup plus grande... sniiif ! :idea:
 

Blount

WRInaute impliqué
Re: comment remplacer url avec accents dans htaccess

Il y a moyen de voir tout le fichier htaccess ?
 

JanoLapin

WRInaute accro
Re: comment remplacer url avec accents dans htaccess

bien sur:
Code:
AddType x-mapp-php5 .php
Options All -Indexes
<files .htaccess>
order allow,deny
deny from all
</files>

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

<files wp-config.php>
order allow,deny
deny from all
</files>

# END WordPress
 

Blount

WRInaute impliqué
Re: comment remplacer url avec accents dans htaccess

Tu as donc bien mis :
Code:
AddType x-mapp-php5 .php
Options All -Indexes
<files .htaccess>
order allow,deny
deny from all
</files>

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^itin[^e]raire/? http://example.org/itineraire/ [L,R=301]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

<files wp-config.php>
order allow,deny
deny from all
</files>

# END WordPress

Je viens de tester la règle, et elle fonctionne.

Sinon, le mot, c'est bien « itinéraire », ou c'est autre chose ? Tu es sur que c'est bien l'adresse avec le « é » qui est mis ?

Il faudra vérifier que WP n'écrase pas ta valeur.
 

JanoLapin

WRInaute accro
Re: comment remplacer url avec accents dans htaccess

Je viens de faire un essai avec le htaccess que tu indiques (merçi de ton aide, au passage): et cela ne marche pas !
Pour éviter les embrouilles, j'ai évidemment neutralisé le rép. de redirection example.org/itinéraire en le renommant

Par ailleurs, d'après 404notifier, l'url example.org/itinéraire/ va se traduire par la requête example.org/itin%C3%A9raire/
==> on peut comprendre que ton code ne marche pas avec cela, alors mais pourquoi alors le répêrtoire de redirection /intinéraire (avec un index.php comprenant une redir 301) fonctionne-t-il, lui :?:

Qu'en penser?
Quel serait le code correct pour rediriger l'url?
 

Blount

WRInaute impliqué
Re: comment remplacer url avec accents dans htaccess

Bin la redirection fonction, je l'ai testé. Donc, ça vient d'autre chose.
 

Leonick

WRInaute accro
Re: comment remplacer url avec accents dans htaccess

si l'adresse est codée en utf8, chaque caractère est codé sur 2 octets d'où le fait qu'il soit probable que la redirection sur 1 seul caractère pour remplacer le "e" ne fonctionne pas
 

JanoLapin

WRInaute accro
Re: comment remplacer url avec accents dans htaccess

Dans le cas d'espèce, c'était un brouillon mail (codé avec Thunderbird en html normal), envoyé à quelqu'un sur sa boite yahoo qui a recopié et renvoyé à tout le monde depuis la même boite: aucune idée donc de l'encodage.
Quand je clique sur l'url du mail renvoyé à tout le monde, 404notifier m'indique que l'url appellée est example.org/itinéraire/

En tapant moi-même dans mon browser (avec utf-8 par défaut) l'expression example.org/itinéraire/, c'est bien l'url example.org/itin%C3%A9raire/ qui est appellée
C'est visible dans la barre d'adresse de FF, avant qu'il ne corrige de lui même et fasse apparaître example.org/itinéraire
404notifier m'indique la même chose.

Mon problème est donc bien de rediriger example.org/itin%C3%A9raire/ vers example.org/itineraire/
 

Amauri

WRInaute occasionnel
Re: comment remplacer url avec accents dans htaccess

En étant plus large :
Code:
RewriteRule ^itin(.*)raire(/|)$ http://example.org/itineraire/ [L,R=301]
 

JanoLapin

WRInaute accro
Re: comment remplacer url avec accents dans htaccess

Merçi de ta proposition, malheureusement, ça entraine une erreur 500 chez moi
 

Amauri

WRInaute occasionnel
Re: comment remplacer url avec accents dans htaccess

Yep en effet, ajoute :

Code:
RewriteCond %{REQUEST_URI} !^/itineraire/$ [NC]

Sinon il redirigera en boucle -> erreur 500 ;)
 

JanoLapin

WRInaute accro
Re: comment remplacer url avec accents dans htaccess

@leonick: non, c'est du 1-1

@amauri: qd tu dis ajoutes, je garde tout de même ta proposition précédente ou seulement la seconde?
 

JanoLapin

WRInaute accro
Re: comment remplacer url avec accents dans htaccess

erreur 500 à nouveau. Pour vérif, voilà le htaccess utilisé
Code:
AddType x-mapp-php5 .php
Options All -Indexes
<files .htaccess>
order allow,deny
deny from all
</files>

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/itineraire/$ [NC]
RewriteRule ^itin(.*)raire(/|)$ http://example.org/itineraire/ [L,R=301]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

<files wp-config.php>
order allow,deny
deny from all
</files>

# END WordPress
(bien sur j'avais pris sopin d'adapter l'url à celle de mon site)
 

Leonick

WRInaute accro
Re: comment remplacer url avec accents dans htaccess

ou juste un
Code:
RewriteRule ^itin[^e]+raire/?$ /itineraire/ [L,R=301]
qui devrait suffire
voire
Code:
RewriteRule ^itin[^e]{1,2}raire/?$ /itineraire/ [L,R=301]
si on suppose que le caractère puisse être codé sur 2 octets.
PS : pas besoin de parenthèses, car on n'a pas besoin de capturer le contenu du masque
 

JanoLapin

WRInaute accro
Re: comment remplacer url avec accents dans htaccess

Merçi, Leonick, tes deux propositions marchent aussi bien l'une que l'autre. En cliquant sur le lien ou en tapant directement depuis un navigateur.

Une raison d'en choisir une plus que l'autre ?
 

Leonick

WRInaute accro
Re: comment remplacer url avec accents dans htaccess

la 2° est moins énergivore, car on ne permet qu'un ou 2 caractères, alors que la 1° peut prendre le nombre de caractères qu'elle veut et fera donc tester à apache toutes les url commençant par "itin"
 

JanoLapin

WRInaute accro
Re: comment remplacer url avec accents dans htaccess

@Leonick: j'avais spontannément retenu la seconde. C'ets à l'oeil nu plus rapide en tout cas que la solution "sauvage" du réperoire de redirection.

Un grand merçi à tous (tes) pour votre aide, qualifiée et suivie.
J'espère que ce topic pourra aussi aider d'autres membres.

...si un modo veut bien passer le titre en [résolu]?
 

Discussions similaires

Haut