Redirection d'une page vers une autre (Joomla)

WRInaute discret
Bonjour
Je cherche depuis des jours la solution pour faire une redirection physique de 2 pages existentes dans un cms
J'ai suivi plein de tuto sur le web pour implémenter cela dans le htacess comme :

Redirect 301 https://www.monite.eu/fr/oldpage1 https://www.monite.eu/fr/newpage1

# RewriteCond %{HTTP_HOST} ^www.monite.eu/fr/oldpage1
# RewriteRule ^(.*) https://www.monite.eu/fr/newpage1 [QSA,L,R=301]

#RedirectPermanent /evenements-prives https://www.monite.eu/fr/newpage1
# RewriteRule ^oldpage1$ "https://www.monite.eu/fr/newpage1" [R=301,L]

oldpage1 est la page d'un blog d'articles newpage1 est une page d'un article informant que cette page n'est pas accessible

rien ny fait :-(
Doit-on avec joomla utiliser un paramétrage particulier du fait des urls dynamiques ?
Merci pour votre aide
 
WRInaute occasionnel
pas le temps d'analyser mais des fois ce serait bien des fois de regarder des fois un peu comment des fois fonctionne le wouaib (une histoire de fois) et le chemin que prend ne requête avant de passer dans un CMS. Sinon après, ici ca reste du php, donc c'est pas bien compliqué de savoir par ou passe une requête wouaib et ou à différents niveau on peut la rediriger, par exemple avant même qu'elle soit routée par joomla,( mais après si on fait du .net core, la il y a vraiment plein d'endroits ou peut injecter des trucs à l'avant depuis l'arrière - de la a dire ..)
Donc une redirection : au niveau le plus "haut", depuis le DNS, ensuite depuis le serveur wouaib "visible", ensuite dans les architectures plus récentes le serveur wouaib derrière (mais ca concerner pas php et joomla), ensuite si vraiment du y tiens effectivement dans la fonction de routage de joomla

et la : dans le chemin que je t'ai dit, il y a un truc qui échappe à plein de gens.

Un CMS LAMP (Linux Apache Mysql PHP blalblabla) n'a qu'une seule page : index.php
Donc il a déjà une redirection alambiquée pour transformer index.php?comp=schmoll&mod=tric&..
en quelque chose de jouable

Ensuite, ces LAMP bidule, avaient auparavant des tables bordeliques à la wordpress avec des correspondances entre des url et des adresses schmolltruc

Maintenant, ce sont des architectures MVC, donc il y a des fonctions de routage ou tu peux aussi rediriger...

Donc si tu veux rediriger, il faut rediriger soit dans leur machins (mais ce sera pas gagné si tu ne sais pas rootées les urls dans les architectures MVC), soit plus simplement dans le paramétrage du serveur wouaib.

A l'intérieur de tes pages, avec les cms actuels / le wouaib actuel, c'est pas la peine d'y croire ou install joomal 1
 
WRInaute discret
Bonsoir
Désolé mais je n'y comprends rien; j'ai une petite culture dans ce domaine.
Si quelqu'un peut me traduire cela en une proposition ou en me répondant simplement que ce que j'ai posté n'est pas possible avec un cms (ici joomla 3.9) ou mieux s'il y a une alternative (si c'est en php merci de dêtre plus précis car je ne sais ps bidouillez dans le framework
@+
 
WRInaute occasionnel
moi j'aime bine ma réponse. En plus court. Tu rediriges dans httpd.conf pas dans .htacess c'est mieux
et plus simple dans le cas d'un CMS lamp
-----------

si tu insistes et veux bricoler le htacess. Alors ce sera mille fois plus compliqué si tu n'y connais rien, de chainer ta redirection avec la grosse embrouille qu'utilise déjà les CMS pour lire et transformer les URLS. Il faudrait que ta modification change l'url, avant l'embrouille du CMS.

Oui contrairement à ce qu'on pense, par exempl, si on sait bricoler le htacess, on peut même mettre dans même hébergement joomla ett wordpress parce qu'ils bricolent différent la transformation de l'url en leu page alambiquée.

-----------
bon mais fais simple : https://htaccess.madewithlove.be/

--------------
ET pour tous ceux qui penseraient qu'il suffit dans le cas des cms de bourrer un .htacess n'importe ou,

Hello! Thanks for posting your comment regarding your website's functionality using www and non-www URLs and /index.php. I'm sorry to see that you are experiencing issues with that. The code in this guide is intended to generally assist with this. However, if you are using a CMS (like WordPress, Joomla!, Drupal, etc) the code may not work.

To reiterate, if you want to force all traffic to go to www.example.com, you will need to add the following code to the top of your .htaccess file:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301,NC]

You may also be able to select to hide the /index.php portion of the URL depending on the CMS you are using. If you can reply with which CMS you are using, we may be able to assist you further.
 
Dernière édition:
WRInaute occasionnel
donc tout marchera très bien si tu mets la redirection dans le bon fichier .htacess
= celui de joomla et surtout au bon dendroit = avant la redirection de joomla et surtout un truc qui ejecte, il ne faut pas que la requête suive la règle suivante

un truc du style (il faut le tester ici) : https://htaccess.madewithlove.be/

et au passage :
La premier paramètre doit commencer par / .Il ne doit donc pas contenir le nom de domaine du site.
Le second paramètre au contraire doit contenir le nom de domaine et le préfixe http:// (évidemment si tu changes de domain, sinon pas besoin du http ni d'url)
et rassures toi, c'est une erreur courante de penser que la requête contient le host (qui est dans une variable - URL, Host, Requête, on mélange tout)


RewriteEngine On

Redirect 301 /index.php /news/article-name-etc-etc?


IfModule autoindex>
IndexIgnore *
</IfModule>
Options +FollowSymlinks
Options -Indexes

RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule .* index.php [F]
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}
RewriteCond %{REQUEST_URI} !^/index\.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L]


-----------
Pas besoin d'être très spécialiste, c'est très bourrin, par contre ce n'est pas interdit de lire la doc, parce qu'à force de copier coller des trucs et d'ecrire un mutu chez OVH
traduction : un hébergement mutualisé chez l'hébergeur OVH ....
 
Dernière édition:
WRInaute discret
Bonjour
Ok donc cela n'a rien a voir avec Joomla
Cela fonctionne bien ... néanmoins effet de bord non prévu car j'ai pas du bien expliqué!

Je veux "juste" empêcher d'accéder à une page (qui affiche une liste d'article de joomla) et la rediriger vers une page d'informations
Ok : Redirect 301 /fr/evenements-prives /fr/agenda

les articles enfants ne devraient pas être impactés et je devrais pouvoir afficher
/fr/evenements-prives/mon-eve-prive1
Hors j'ai une redirection /fr/agenda/mon-eve-prive1 qui m'affiche un beau 404 (logique me direz-vous!)

du coup ma question plus précises; est-il possible de rediriger uniquement l'url parente "/fr/evenements-prives" sans rediriger l'url enfant "/fr/evenements-prives/mon-eve-prive1"
@+
 
WRInaute occasionnel
alors il va falloir lire un peu de documentation
Pour apache, lire ce ceci
https://httpd.apache.org/docs/2.4/fr/rewrite/

pour comprendre il y a ce schéma dans la doc
rewrite_process_uri.png




et pour agir il, si on ne veut pas lire toute la doc (qui n'est pas très longue dans ce cas)
il faut utiliser les drapeaux

https://httpd.apache.org/docs/2.4/fr/rewrite/flags.html

par exemple le drapeau S (skip)

----------
et sinon c'est difficile de comprendre ton cas dans la "vraie vie"

si tu veux interdire "un répertoire virtuel" ex /toto et pas la page /toto/bidon.html
ne travaille pas au niveau .htacess
Si c'est un répertoire réel, ne t'embête pas, déjà par sécurité tout répertoire au dela de l'interdiction par linux de l'afficher, doit contenir au minimum un fichier par défaut : index.html qui contien une redirection : c'est le strict minimum en sécurité des sites webs
 
Dernière édition:
WRInaute discret
Bonjour
Merci d'avoir pris le temps de me répondre.
J'ai bien regarder le drapeau "S" mais j'avoue que j'ai du mal à voir l'application dans mon cas, surtout quand tu me dis la fin de ton message
Effectivement je ne suis pas dans une arborescence réel puisque c'est un cms qui sert dynamiquement des urls
Je vais essayer de réexpliquer :
1/ un auteur crée une page (dans une liste d'articles joomla)
2/ l'auteur envoie l'url par différents moyens à ses amis que seul ceux-ci pourront voir (page privé)
3/ petit soucis (rare mais qui existera) pour ceux qui connaissent le web, en enlevant le titre de l'article,il aboutit à l'url parente qui affiche la liste des pages privés :-(
Sur le forum joomla on m'a suggéré d'agir sur le htacess car je ne voulais pas acheter un composant (même pas sûr qu'il fasse ce "petit besoin)
Maintenant je suis ici et je ne suis plus du tout sûr que cela soit possible
Si tu as une idée à tester !?
 
WRInaute occasionnel
alors faisons plus simple (il y a pleins de solutions différentes pour arriver a ce que tu veux) parce que je pense que la solution la plus simple
regarde ceci

redirectmatch

c'est très pratique, c'est comme redirect permanent mais tu peut mettre une expression régulière
Je n'aime pas écrire directement les solutions, ce n'est pas formateur, et après tout le monde fait du copier coller et l'intelligence humaine décroit inlassablement

Disons que le premier paramètres derrière ditectmatch, c'est un tag qui reviendrait a écrire 301 303 .. selon ton besoin

en suite une expression régulière, et donc attention, elle commence par ^ et fini par $ ensuite la destination

Je résume c'est comme redirect mais dans le premier paramètre tu peux mettre une expression régulière,
un truc du style ^/dossier1/$

A placer avant joomla

et si ca ne va toujours pas, essaie avec un sitemap (en gros tu ecris si l'url est dans le sitemap va a la home)
et dans le sitemap tu bourrestotues les urls virtuel qui t'embetent..........

(au passage il y a des dizaines d'articles sur le web qui traitent ces sujets qui datent d'apache donc environ une vingtaine d'années)

et tu as bien fait de ne pas ajouter un nieme module inutile dans joomla. Dans ce cas, comme dans tous ces modules pour clowns du web, il a 98% de code, ressources trucs et bidules juste pour rendre le module compatible avec les autres modules trucs ... et moins de 2% de code utile.
 
Dernière édition:
WRInaute discret
...
Je n'aime pas écrire directement les solutions, ce n'est pas formateur, et après tout le monde fait du copier coller et l'intelligence humaine décroit inlassablement...
Je respecte tes choix même si je ne partage pas ton avis. je préfère développer mon intelligence dans mes domaines qui me sont propres et je pense que c'est tout à fait possible. Une solution toute faite n'est pas tjs synonyme de baisse d'intelligence. Globalement j'aime bien en général aborder la complexité, la méta ...

Je préférerai effectivement une solution à tester, car je tombe fréquemment sur des réponses comme tu le fais pour des questions sql, css, php et 9/10 j'abandonne car je suis stressé pour trouver une solution qui me fasse enfin lancer ce site pour développer mon autonomie financière (puisque je suis à mon compte).
Cela fait près d'un an que je travaille sur ce projet et j'avoue que je fatigue devant le nbr de choses à résoudre.
Si qq veut bien m'aider dans ce sens, sinon je regarderai dans semaine car il me faudra certainement qq heures :-( pour peut-être commencer à trouver une piste sur ce cas particulier
@+
 
WRInaute occasionnel
mais tu as la solution écrite, il suffit de lire : redirectmatch
aussi attention, ce n'est pas toujours noel, donc ma fréquentation assidu de ce forum va disparaitre totalement d'ici peu. En plus c'est en gras. Je t'offre 20 ans d'expérience de web chez des personnes pour qui 10 minutes de web hs représente 60 personnes sans travail.
essaie cette adresse que tu trouverais par gogole : https://alexandre.alapetite.fr/doc-alex/redirections/index.fr.html
 
WRInaute discret
s'il s'agit simplement de mettre
redirectmatch 301 ^fr/evenements-prives/$ /fr/agenda
ce serait très simple mais c'est après pour faire le regexp qui mefait peur et Il faut que je fasse cela sur un site de test pour ne pas tout casser sur le site de prod.C'est pour cela que je dis aussi si c'est plus compliqué que je ne pourrai pas terminer ce soir car je suis bientôt entrain de faire mes bagages.
 
WRInaute discret
Bonsoir
Bon cela fonctionne :)avec
Code:
RewriteEngine On
redirectmatch 301 ^/fr/evenements-prives$ /fr/pages/non-autorisee
redirectmatch 301 ^/fr/evenements-prives/$ /fr/pages/non-autorisee
seul truc bizarre avec chrome, cela me renvoit à une autre page qui n'est pas "non-autorise". Pas très grave car le principal est de ne pas avoir accès à la liste mais troublant quand même cette différence
@+
 
Discussions similaires
Haut