Aller au contenu

.htaccess et pages anciennes en php


Sujets conseillés

Posté (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é par Melkior
Posté

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 ?

 

Posté (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é par Melkior
Posté

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

Posté (modifié)

La redirection fonctionne correctement.

 

Un grand merci d'avoir partagé tes connaissances.

C'est très gentil.

Bon week-end.

Modifié par Melkior
Posté

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"

 

Posté (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é par Melkior
  • 4 months later...
Posté

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

 

Posté

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 !

 

  • 10 months later...
Posté

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.

Posté

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.

 

 

Posté

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   ;)

 

Posté

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.

 

Posté

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 !

 

  • 2 months later...
Posté

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

Posté

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

 

Posté

Alors ne mets que ceci

RewriteCond %{QUERY_STRING}  rub=
Posté

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.

Posté

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 :?:

 

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...