Bonjour à tous !!
J'ai une question assez complexe, tout du moins pour mon piètre niveau avec les regex et les redirections...
Tout d'abord, les bases :
Je travaille depuis plus d'une année sur un site qui se veut "communautaire". Ce site gère différents types d'utilisateurs. J'ai des marques, des associations, des magasins, des médias et des utilisateurs standards. Chacun de ces rôles peut être décliné en "sous-rôles" dont certains ont des espaces bien particuliers. Le site a été profondément modifié il y a de celà un mois, pour simplifier certains éléments.
La première chose à savoir est la suivante :
marques et associations ont leur espace via une url du type : {nom}/*
les autres roles ont leur espace via une url du type : {identifiant-unique}/{nom}/*
exemples :
- la homepage de la marque "the brand" sera accessible via /the-brand/home
- la homepage de l'association "the assoc" sera accessible via /the-assoc/home
- la homepage du média "the media" sera accessible via /1044/the-media/home, sachant que 1044 est l'identifiant unique du média sus-cité.
Je vais illustrer mon problème avec les marques, mais je peux le retrouver avec d'autres rôles utilisateurs. Dans le système, j'ai des marques qui sont "partenaires", et d'autres qui ne le sont pas (idem pour les associations, médias et magasins).
Une marque "partenaire" possède un espace avec plusieurs pages :
/home
/profile
/history
/official-products
/community-products
/network
/...
Une marque non-partenaire, quant à elle, ne possède qu'une seule page :
/home
Le souci est le suivant : L'ancien site autorisait plusieurs pages pour les acteurs non-partenaires, exemple :
/home
/profile
/official-products
/community-products
Aujourd'hui, la page de profil a été supprimée, les produits officiels et communautaires également, et tout se retrouve sur la page /home, qui affiche les différentes données.
Ce que j'aimerai, c'est pouvoir faire des redirections pour les pages qui n'existent plus. Malheureusement, j'imagine que je ne peux pas faire une simple redirection du genre (pseudo code, hein... chuis une brèle en regex...) :
/[a-zA-Z0-9]/profile => /{$1}/home
Puisque les marques partenaires possèdent toujours une page /profile... Si je fais ça, lorsque je voudrais aller voir le profil d'une marque partenaire, je serais automatiquement redirigé vers sa page d'accueil, et bien entendu son profil ne sera plus jamais accessible...
Toutes ces explications pour en arriver à la grande question que je me pose... :
Est-ce qu'il est possible de poser une condition pour dire :
si /{name}/profile n'existe pas, alors redirection vers /{name}/home, sinon on ne change rien.
En gros :
- si la page "/ma-marque-partenaire/profile" existe alors on ne fait rien
- sinon si la page "/ma-marque-non-partenaire/profile" n'existe pas alors on redirige vers "/ma-marque-non-partenaire/home"
Oui, ça fait bcp d'explication pour pas grand chose, mais je préfère que ça soit bien clair... J'ai trouvé un petit bout de code qui utilisait 2 RewriteCond dont une avec un argument -U qui semble dire "si l'url existe" et à priori, ça ressemblerai à ce que je veux, mais par contre je ne sais pas trop comment écrire les règles nécessaires car les regex, c'est vraiment pas mon fort
Un petit coup de pouce serait donc vraiment bienvenu. En vous remerciant d'avance d'avoir pris la peine de me lire jusqu'au bout :-)
Cordialement.
Thierry
Partager