Melkior Posté 15 Novembre 2019 Posté 15 Novembre 2019 (modifié) Bonjour, Un site avait des pages en php. Suite à une refonte, toutes les pages sont en html Pas de souci pour rediriger les pages du style : /mapage.php avec: redirect 301 "/mapage.php" https://www.monsite.fr Mais les directions ne prennent pas pour des pages comme /mapage?id=10" En effet redirect 301 "/mapage?id=10" https://www.monsite.fr Ne fonctionne pas. Y a t-il une solution ? Merci PS ... Quand je clique sur l'adresse de la page Voilà ce qui est indiqué sur la page Citation Not Found The requested URL /mapage.php was not found on this server. Modifié 15 Novembre 2019 par Melkior
Dan Posté 15 Novembre 2019 Posté 15 Novembre 2019 Bonjour, On ne rajoute JAMAIS le QUERY_STRING dans le premier terme d'une redirection. Essaie redirect 301 /mapage https://www.monsite.fr Si ton id=10 doit être traité il faut utiliser RewriteCond et RewriteRule au lieu de redirect ! Mais je ne suis pas certain de ton exemple mapage?id=10 .... tu ne voulais pas écrire mapage.php?id=10 plutôt ?
Melkior Posté 15 Novembre 2019 Auteur Posté 15 Novembre 2019 (modifié) Merci pour la réponse. La page est bien https://www.monsite.fr/mapage?id=10 J'ai modifié avec RewriteEngine On RewriteCond %{HTTP_HOST} ^monsite.fr$ RewriteRule ^(.*) https://www.monsite.fr/$1 [R=301,L] RewriteRule ^index\.html$ / [R=301,L] RewriteCond %{HTTPS} off [OR] RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC] RewriteRule ^ https://www.%1%{REQUEST_URI} [L,NE,R=301] redirect 301 /mapage https://www.monsite.fr Maintenant j'ai une redirection quand je mets l'ancienne adresse mais cela me dirige à l'écran vers la page d'accueil mais dans la barre d'adresse j'ai: https://www.monsite.fr/?id=10 Il doit y avoir une erreur car il faut arriver à la page https;//www.monsite.fr sans ?id=10 J'ai pas trop saisie ce que tu as dit => il faut utiliser RewriteCond et RewriteRule au lieu de redirect C'est pour cela que j'ai mis l'htaccess complet Modifié 15 Novembre 2019 par Melkior
Dan Posté 15 Novembre 2019 Posté 15 Novembre 2019 A la place de ta ligne redirect il faut utiliser ceci : RewriteRule mapage https://www.monsite.fr/? [R=301,L] Le ? en fin du second argument évite l'ajout du QUERY_STRING
Melkior Posté 15 Novembre 2019 Auteur Posté 15 Novembre 2019 (modifié) La redirection fonctionne correctement. Un grand merci d'avoir partagé tes connaissances. C'est très gentil. Bon week-end. Modifié 15 Novembre 2019 par Melkior
Dan Posté 15 Novembre 2019 Posté 15 Novembre 2019 Pas de quoi Je précise tout de même que si tu rediriges toutes tes pages à la racine du nouveau site, tu risques une pénalité pour "duplicate content"
Melkior Posté 15 Novembre 2019 Auteur Posté 15 Novembre 2019 (modifié) Ce sont des anciennes pages qui n'ont aucun contenu. J'aurais pu les laisser tel quel, mais elles ont des backlinks. La redirection sert à récupérer le "jus". Quand tu de duplicate content, tu veux dire par exemple que le site est accessible sous differente url. Par exemple : http://www.monsite.fr http://www.monsite.fr/index.html Modifié 15 Novembre 2019 par Melkior
Dan Posté 15 Novembre 2019 Posté 15 Novembre 2019 Oui, mais ça ce n'est pas grave. Google sait gérer cela !
Melkior Posté 6 Avril 2020 Auteur Posté 6 Avril 2020 Bonjour, Existe-il une astuce de redirection quand on clic sur un lien sur une page d'un partenaire quelconque et qu'il nous renvoie vers : h**s://www.monsite.com/?page=information et que cette page n'existe pas sur mon site ( site non dynamique) J'ai essayé des redirections diverses et je n'arrive pas à rediriger cette page vers la home du site. Merci
Dan Posté 6 Avril 2020 Posté 6 Avril 2020 Tout simplement comme ceci : RewriteCond "%{QUERY_STRING}" "page=information" RewriteRule ".*" "https://www.tonsite.com/?" [R=301,L] Le ? de la règle de réécriture est indispensable si tu ne veux pas que le QUERY_STRING soit accolé à l'URL !
Melkior Posté 7 Février 2021 Auteur Posté 7 Février 2021 Bonjour, Ce post est ma bible pour les redirection .htaccess J'y reviens régulièrement. Par contre je coince sur une redirection de pages php sans query pour un répertoire /dotclear/ Je veux rediriger toutes les pages du répertoire /dotclear/ vers l'index. Les pages à rediriger se présentent sous cette forme => h***://www.monsite.fr/dotclear/index.php?pages/riri-fifi Ayant mis redirect 301 "/dotclear/" https://www.monsite.fr Quand je clique sur l'url à rediriger cela me renvoie à l'affichage de la page index dans mon navigateur mais avec comme adresse : h***://www.monsite.fr/?pages/riri-fifi Merci pour l'aide.
Dan Posté 7 Février 2021 Posté 7 Février 2021 Comme ceci peut-être ? redirect 301 "/dotclear/" https://www.monsite.fr/? Je sais par expérience que l'ajout de ? en fin de réécriture permet d'éviter la transmission du QUERY_STRING dans une RewriteRule. Je ne sais pas si c'est pareil avec un Redirect.
Dan Posté 7 Février 2021 Posté 7 Février 2021 Manifestement cela ne fonctionne pas avec mod_alias qui inclut d'office le ? Mais sinon, ceci devrait fonctionner : RewriteEngine on RewriteRule /?dotclear/ https://www.monsite.fr/? [R=301,L] ou encore, en utilisant le flag QSD d'apache (version 2.4 ou ultérieure) : RewriteEngine on RewriteRule /?dotclear/ https://www.monsite.fr/ [R=301,L,QSD] QSD signifie Query String Discard
Melkior Posté 7 Février 2021 Auteur Posté 7 Février 2021 Un grand merci Dan. La 2em solution fonctionne. Par contre je suis surpris, après avoir mis le bout de code et nettoyé le cache du navigateur firefox. Je suis revenu sur l'url pour laquelle je coinçais et bizarrement elle me renvoyait toujours à : h***://www.monsite.fr/?pages/riri-fifi Mais comme j'avais d'autres pages à rediriger du même style, j'ai essayé et là miracle sur les autres no problem.
Dan Posté 7 Février 2021 Posté 7 Février 2021 J'ai déjà vécu cela, surtout avec des versions récentes : le cache de Firefox ne se vide pas totalement ! Dans ce cas je vide le cache, arrête complètement Firefox et le relance. Et là ça passe !
Melkior Posté 5 Mai 2021 Auteur Posté 5 Mai 2021 Hello Dan, Je lis de large en long ce post et je n'ai pas la solution à mon problème. C'est la redirection d'une page qui ressemble à ceci : http://www.monsite.com/?rub=44 J'ai mis : RewriteCond "%{QUERY_STRING}" "rub=44" RewriteRule ".*" "https://www.monsite/?" [R=301,L] Pas de souci, cela fonctionne, malgré qu'il lui faut 1 seconde pour qu'il interprète la chose !! Mais le soucis c'est qu'il y a plusieurs page "44" "45" "50" "60" "72" Que me conseilles-tu Merci
Dan Posté 5 Mai 2021 Posté 5 Mai 2021 Ce sont toutes les pages qui ont un QUERY_STRING sous la forme "rub=" ? Ou bien tu en as qui ont rub= mais ne doivent pas être redirigées ? Il ne faut pas les doubles quotes dans ta condition. RewriteCond %{QUERY_STRING} rub=44
Melkior Posté 5 Mai 2021 Auteur Posté 5 Mai 2021 Mille merci, cela fonctionne. Pour info 2 posts au-dessus tu as dit qu'il fallait enlever les quotes - Je dois avoir d'autres sites qui possède les quote dans l'htaccess. Curieux de savoir quel est l'influence des quotes ! Toujours est-il je te souhaite une bonne fin de journée.
Dan Posté 5 Mai 2021 Posté 5 Mai 2021 Les quotes ne servent qu'à protéger d'éventuels caractères spéciaux. Sans certitude aucune, mais je pense qu'apache doit vraisemblablement scruter ces chaînes de plus près.... donc prendre plus de temps
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant