Question

Rapide.

J'utilise le mod rewrite et la plupart des remplacements sont en place:

  • espace vide = _
  • æ = ae
  • Æ = ae

et ainsi de suite.

Quel serait le caractère de remplacement naturel de / ?

Merci

Était-ce utile?

La solution

Le trait de soulignement est considéré comme un caractère de mot. Par conséquent, foo_bar correspond à un mot et non à deux mots. Mais le trait d'union n'est pas considéré comme un caractère de mot, donc foo-bar est deux mots.

Vous devez donc utiliser hypen - pour séparer deux parties et le trait de soulignement _ où vous souhaitez connecter deux parties. Dans le cas de / utilisé pour la séparation, je préférerais l'hypen - .

Autres conseils

  
      
  • & # 198; = ae
  •   

Vous n'avez pas nécessairement besoin de faire cela. Vous pouvez insérer des caractères Unicode non-ASCII dans une URL, tout comme des octets codés UTF-8. Donc:

http://en.wikipedia.org/wiki/%C3%86

s'affiche dans les navigateurs en tant que:

http://en.wikipedia.org/wiki/Æ

et l'un ou l'autre peut être collé dans la barre d'adresse.

L'espace et la barre oblique peuvent être codés en% 20 et% 2F. Toutefois, ces formulaires apparaissent toujours sous forme de pourcentages dans le navigateur, car ce sont des caractères réservés. Donc, ils ne sont pas aussi jolis. Il existe un problème supplémentaire avec% 2F, en ce sens que les environnements de script traditionnels basés sur CGI ne peuvent pas les lire, et Apache par défaut les bloque délibérément pour empêcher de tels scripts de se perdre et de laisser des failles de sécurité.

Je fais donc des slugs de titre en enlevant complètement:

# % ' ( ) ? [ ] (U+00AD soft hyphen)

avec tous les caractères de contrôle (U + 0000 à U + 001F sauf U + 00A0 et U + 007F à U + 00BF). Puis, remplacez toute exécution de:

" $ & * + , / : ; < = > @ \ ^ (U+0020 space) (U+000A newline)

avec un seul trait de soulignement. Cela évite d’afficher une séquence% xx dans l’URL. (Pour les caractères Unicode, il y aura toujours des séquences% xx, mais l'utilisateur ne les verra pas.)

Vous pouvez utiliser un trait d'union au lieu d'un trait de soulignement si vous préférez, celui qui est le plus joli. Les moteurs de recherche devraient convenir à l'un ou à l'autre.

eta re commentaire sur une autre réponse:

  

Parce que j'utilise php pour rechercher le nom dans ma base de données. Chaque personnage doit donc être reconverti en personnage d'origine, sans quoi aucune correspondance ne sera trouvée.

Dans ce cas, vous ne pouvez toutefois rien faire d’improbable pour les personnages. Vous ne pouvez pas changer & # 8216; & # 198; & # 8217; Pour & # 8216; ae & # 8217 ;, les espaces doivent être codés comme suit: & # 8216;% 20 & # 8217; et des barres obliques en tant que &% 8216;% 2F & 8217 ;. Cela se traduira par des URL légèrement laides et le & # 8216;% 2F & # 8217; vous donnera des problèmes de déploiement sur Apache et IIS.

Si vous devez saisir uniquement un titre, vous devez ajouter une colonne (index unique) sur le slug traité pour la recherche, comme suggéré ci-dessus. Cependant, notez que vous ne pouvez pas renommer / corriger le titre de la page, cela changerait le slug et romprait l'URL.

Une approche courante pour contourner ce problème consiste à inclure un identifiant numérique en plus du slug (voir, par exemple, comment un SO le fait). Vous pouvez également effectuer une redirection 301 lorsque le nom du slug est incorrect pour un référencement optimal.

Je voudrais utiliser un tiret - Google séparant des mots comme celui-ci à des fins de référencement, ou même un trait de soulignement _, ces deux éléments étant parfaits pour la lisibilité.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top