Oui, je sais, il y a des tonnes de questions comme celle-ci, mais je ne peux pas en trouver une qui résout mon problème, alors, au prix de recevoir des votes négatifs, je vais poser à nouveau cette question. Même un lien en double peut m'aider.
C'est un travail que je n'ai jamais fait auparavant, j'ai ce genre d'URL demo.html?code=IT-ROM-FCO
où:
IT
est le code IATA pour "Italie"ROM
est le code IATA pour "Rome"FCO
est le code IATA pour "Aéroport de Rome Fiumicino".Je dois réécrire l'URL ci-dessus pour l'afficher comme ceci airports/italy/rome/aeroporto-di-roma-fiumicino
, les chaînes du résultat proviennent d'un service d'API.
Je connais la réécriture simple pour changer products.php?id=7
en products/7
mais je n'ai jamais exécuté une telle tâche (obtenir une URL - récupérer des données dans PHP avec le code donné - "joli" la nouvelle URL)
Comme je ne sais vraiment pas comment réaliser ce travail, je n'ai pas d'exemple de code, désolé.
Je recommande de garder les codes dans l'URL. Il y a quelques avantages à le faire:
Je vous recommande d'utiliser une URL du type: /IT-ROM-FCO/airports/italy/rome/aeroporto-di-roma-fiumicino
. Vous utiliseriez la règle de réécriture suivante pour insérer les codes dans le paramètre et supprimer le slug:
RewriteRule ^/?([A-Z]+-[A-Z]+(-[A-Z]+)?).* /demo.html?code=$1 [L]
Cela prendrait n'importe quelle URL comportant deux ou trois abréviations au début et les placerait dans le paramètre code. Cela devrait prendre en charge vos cas code=IT-ROM
ou code=IT-ROM-FCO
que vous avez mentionnés dans les commentaires.
Ensuite, lorsque vous générez des URL sur votre site, placez la jolie version dans les hrefs:
<a href="/IT-ROM-FCO/airports/italy/rome/aeroporto-di-roma-fiumicino">
Vous devrez également "canoniser" vos URL. L'URL /IT-ROM-FCO/foo-bar
affichera alors le même contenu. Il est probablement plus facile de résoudre ce problème en utilisant une balise canonique rel meta link en tête de page avec la jolie URL. Cela indiquera à Google quelle version est votre URL préférée.
<link rel="canonical" href="https://example.com/IT-ROM-FCO/airports/italy/rome/aeroporto-di-roma-fiumicino">