Est-ce que mod_rewrite peut trouver une variable dans une URL, remplacer une partie avant, supprimer la variable et conserver ce qui rest?

J’ai regardé autour de moi mais franchement, je ne suis pas sûr du jargon avec lequel je dois chercher pour obtenir des résultats plus précis. Heck, je me bats avec url vs uri vs page vs lien et ce que chacun est et n’est pas. Et les guides MOD_REWRITE semblent être écrits pour les personnes qui connaissent bien Apache, Unix, etc., surtout quand aucun d’entre eux ne semble expliquer ou parsingr les exemples de ce que chaque personnage de “programmation” fait ou veut dire. Ici et à travers Google, je ne semble pas obtenir tout ce que je veux dans les 25 premiers résultats des recherches que j’ai essayées couvrant le concept de …

Eh bien, ce que j’essaie de faire est de remplacer les chaînes de caractères génériques d’une URL en fonction de trois variables tout en préservant les autres bits. Est-ce possible en utilisant mod_rewrite?

Par exemple

Les trois URL demandées sont les suivantes:

  1. http://mydomain.com/WORDS-AND-DASHES-c-NUMBERS_WITH_UNDERSCORES
  2. http://mydomain.com/WORDS-AND-DASHES-m-NUMBERS_WITH_UNDERSCORES
  3. http://mydomain.com/WORDS-AND-DASHES-p-NUMBERS_WITH_UNDERSCORES

Les URL réécrites, respectivement, doivent être:

  1. http://mydomain.com/index.php?index&categories_id=NUMBERS_WITH_UNDERSCORES
  2. http://mydomain.com/index.php?main_page=index&mfrs_id=NUMBERS_WITH_UNDERSCORES
  3. http://mydomain.com/index.php?main_page=index&products_id=NUMBERS_WITH_UNDERSCORES

Le contenu et la longueur de WORDS-AND-DASHES varient d’une page à l’autre, tout comme le NUMBERS_WITH_UNDERSCORES. Les seules constantes sont le domaine et les trois identificateurs de type de lien, -c-, -n- et -p-. Les WORDS-AND-DASHES sont remplacés par une variable en fonction du type de lien, qui est éliminé, et NUMBERS_WITH_UNDERSCORES restnt dans la nouvelle URL.

IOW si une URL contient “-c-” alors je veux tout remplacer entre le domaine et “-c-” avec “index.php? Index & categories_id =”, supprimez la partie “-c-” et conservez NUMBERS_WITH_UNDERSCORES. Il est possible que seul un nombre suive -c-, -m- ou -p- aussi.

Si je connaissais PHP, c’était probablement possible, mais pas moi et j’espère que mod_write est aussi puissant que je pense. S’il faut plusieurs règles par variable, cela me convient également. Faire trois fois le travail est encore mieux que 10000+ fois.

FWIW, lors d’une mise à niveau, il a été découvert que l’ancien module de réécriture d’URL ne fonctionnait plus. Je tente donc de reconstruire rapidement .htaccess et sitemap.xml pour les moteurs de recherche et tous les liens morts dans leurs résultats respectifs.

… encore une fois, je risquais d’aboyer le ruisseau Metaphorbial Mangled.

Merci pour toute connaissance, direction à donner et / ou conseil que vous partagez.

-AVANT JC

Les règles suivantes devraient fonctionner. Ils doivent être placés dans le fichier .htaccess dans le répertoire racine de votre site Web.

 RewriteEngine On RewriteRule ^([az-]+)-c-([0-9_]+) index.php?index&categories_id=$2 [NC] RewriteRule ^([az-]+)-m-([0-9_]+) index.php?main_page=index&mfrs_id=$2 [NC] RewriteRule ^([az-]+)-p-([0-9_]+) index.php?main_page=index&products_id=$2 [NC] 

Apache lancera index.php lorsque les URL que vous avez mentionnées dans votre question sont demandées. Apache remplira la chaîne de requête en conséquence. Si WORDS-AND-DASHES contient autre chose que az et - alors modifiez les règles en conséquence.

Cela peut être trop simplifié, mais essayez:

 RewriteEngine On RewriteRule ^(.*?)-c-([\d_]+)$ index.php?index&categories_id=$2 [L] RewriteRule ^(.*?)-m-([\d_]+)$ index.php?main_page=index&mfrs_id=$2 [L] RewriteRule ^(.*?)-p-([\d_]+)$ index.php?main_page=index&products_id=$2 [L]