Routage d'URL : gestion des espaces et des caractères illégaux lors de la création d'URL conviviales

J'ai vu beaucoup de discussions sur le routage d'URL et BEAUCOUP de bonnes suggestions... mais dans le monde réel, une chose que je n'ai pas vue discutée est :

  • Création d'URL conviviales avec des espaces et des caractères illégaux

  • Interroger la base de données

  • Supposons que vous construisez un site médical, qui contient des articles avec une catégorie et une sous- catégorie facultative. (1 à plusieurs). ( J'aurais pu utiliser n'importe quel exemple, mais le domaine médical a beaucoup de longs mots )

    Exemple de catégories/structure de sous-articles/d'articles :

  • Votre état de santé général (catégorie)

    • Santé naturelle (sous-catégorie)
    • Le système immunitaire de votre corps et pourquoi il a besoin d'aide. (Article)

    • Les plantes et les herbes sont-elles vraiment la solution?

    • Dois-je manger des aliments enrichis?


    • Médecine homéopathique
    • Qu'est-ce que la médecine homéopathique?


    • Alimentation saine
    • Faut-il boire 10 tasses de café par jour?

    • Les légumes bio en valent-ils la peine?

    • Burger King® est-il mauvais ?

    • Le « French café » ou le café américain est-il plus sain?



  • Maladies et affections (Catégorie)

    • Troubles auto-immuns (sous-catégorie)
    • Le tueur #1 de personnes est une maladie

    • Comment obtenir de l'aide


    • Conditions génétiques
    • Prévenir le spina bifida avant la grossesse.

    • Êtes-vous prédisposé à vivre longtemps?



  • Suggestions personnelles du Dr FooBar (Catégorie)
  • Mes réflexions sur la phytothérapie et les remèdes naturels (Article - pas de sous-catégorie)

  • Pourquoi devriez-vous vous soucier de votre santé?

  • Il est possible de bien manger et d'avoir une bonne alimentation.

  • La chirurgie sans effusion de sang a-t-elle atteint sa maturité ?


  • Dans une structure comme celle-ci, vous allez avoir des URL LOOONG si vous y allez : /{Category}/{subcategory}/{Article Title}

    De plus, il existe de nombreux caractères illégaux, comme #!? 'é' etc.

    ALORS, LA OU LES QUESTIONS SONT :

  • Comment géreriez-vous les caractères et les espaces illégaux ? (Avantages et inconvénients ?)

  • Souhaitez-vous gérer l'obtention de cela à partir de la base de données

    • En d'autres termes, feriez-vous confiance à la base de données pour trouver l'élément, en transmettant le titre, ou extrayez-vous tous les titres et trouvez la clé dans le code pour obtenir la clé à transmettre à la base de données (deux appels à la base de données) ?


  • note : je vois toujours de jolis exemples comme /products/beverages/Short-Product-Name/ que diriez-vous de gérer certains exemples laids ^ _ ^


    Solution du problème

    Je préfère moi-même _ à - pour des raisons de lisibilité (vous mettez un soulignement dessus et le _s'en va virtuellement), si vous allez supprimer les espaces.

    Vous voudrez peut-être essayer de convertir des caractères étendus, c'est-à-dire ü, en équivalents ascii proches lorsque cela est possible, c'est-à-dire :

    ü -> u

    Cependant, d'après mon expérience, le plus gros problème avec les problèmes liés au référencement réel n'est pas que l'URL contient tout le beau texte, c'est que lorsque les gens changent le texte du lien, tout votre travail de référencement se transforme en merde parce que vous avez maintenant des LIENS MORTS dans le index.

    Pour cela, je suggérerais ce que fait stackoverflow, et avoir une partie numérique qui fait référence à une entité constante, et ignorer totalement le reste du texte (et/ou le mettre à jour quand il est faux)

    De plus, la nature grossièrement héroïque rend simplement la mauvaise utilisation par les humains. Les humains détestent les URL longues. Les copier-coller est nul et ils sont juste plus enclins à se casser. Si vous pouvez le subdiviser en teirs inférieurs, c'est-à-dire

    /article/1/Some_Article_Title_Here
    /article/1/Section/5/Section_Title_Here
    /section/19023/Section_Title_here ( == above link )

    De cette façon, le seul moment où vous devez faire de la magie vaudou est lorsque l'article numéroté a été supprimé, moment auquel vous utilisez la partie texte comme chaîne de recherche pour essayer de trouver le véritable article ou quelque chose comme ça.

    Commentaires

    Posts les plus consultés de ce blog

    Erreur Symfony : "Une exception a été levée lors du rendu d'un modèle"

    Détecter les appuis sur les touches fléchées en JavaScript

    Une chaîne vide donne "Des erreurs ont été détectées dans les arguments de la ligne de commande, veuillez vous assurer que tous les arguments sont correctement définis"