Redirection permanente

WRInaute discret
Bonjour,

Je vais publier la nouvelle version d'un site et je souhaite donc mettre des redirections 301 mais je n'y arrive pas.

L'adresse des anciennes pages est de la forme http*//www*aceing*com/?p=solutions, ... et maintenant elle sera http*//www*aceing*com/maitrise-oeuvre/solutions.

Alors j'ai mis ceci dans mon htaccess mais rien ne se passe :

Code:
RewriteEngine On
RewriteRule /?p=maitriseoeuvre htpp://www.maitrise-oeuvre-batiment.com/maitrise-oeuvre/maitrise-oeuvre.php? [R=301,L]
RewriteRule (.*)\.html /$1.php [L]

Si je met ceci j'ai une erreur 500 :
Code:
RewriteEngine On
RewriteRule ?p=maitriseoeuvre htpp://www.maitrise-oeuvre-batiment.com/maitrise-oeuvre/maitrise-oeuvre.php? [R=301,L]
RewriteRule (.*)\.html /$1.php [L]

Si quelqu'un avait une idée de la façon de faire parce là je ne vois pas comment faire, le htaccess s'est pas trop mon fort !

Merci d'avance
 
WRInaute discret
Oui effectivement je n'avais pas vu ça mais le problème reste strictement le même avec la correction et j'ai aussi essayé avec ou sans le / devant l'ancienne page. Désolé pour cette erreur, mais ça ne vient pas de là !
 
WRInaute passionné
La forme de tes urls dans ton code html est elle bien du type "/maitrise-oeuvre/maitrise-oeuvre..." ?
 
WRInaute discret
Oui la forme de mes url est de la forme : maitrise-oeuvre/maitrise-oeuvre.html.

Il y avait donc bien une erreur dans le htaccess sur l'extension du fichier que j'ai modifié mais ça ne change rien !

J'ai essayé pas mal de choses mais ça ne marche jamais, je crois que je ne suis pas prête de le publier le site si je n'arrive pas à faire marcher les redirections permanentes ! Sinon je vais perdre pas mal de visiteur si je ne peux pas rediriger les pages :cry:
 
WRInaute occasionnel
breizh_web a dit:
...
Alors j'ai mis ceci dans mon htaccess mais rien ne se passe :
...
Si je met ceci j'ai une erreur 500 :
Normal
1 : Tu ne peux pas faire de règle sur des paramètre d'URL (Soit tous ce qu'il y a à partir du "?")
[EDIT]Je me suis gourré, c'est possible mais pas directement[/EDIT]

2 : Le premier caractère est un "?" hors c'est un caractère spécial qui nécessite un "" devant pour le déspécialiser (le "?" sert à indiquer 0 ou 1 fois le caractère précèdent et dans se cas tu n'as pas de caractère devant donc erreur 500)
 
WRInaute discret
Ce que tu veux dire c'est que je ne pourrais pas rediriger http*//www*aceing*com/?p=maitriseoeuvre de la version actuel vers http*//www*aceing*com/maitrise-oeuvre/maitrise-oeuvre.html, page de la nouvelle version, parce que les anciennes url sont construites avec des paramètres dedans !

Là je comprends pas, j'ai une autre site avec des paramètres dans les url dont j'ai entièrement réécrit les urls

Si c'est ça, c'est très embêtant car les pages internes sont aussi référencées dans les moteurs :cry:
 
WRInaute occasionnel
J'ai dis une demi connerie, c'est possible de gérer les param
Code:
RewriteRule ^/$ %{QUERY_STRING} [C]
RewriteRule .*p=maitriseoeuvre.* http://www.maitrise-oeuvre-batiment.com/maitrise-oeuvre/maitrise-oeuvre.php? [R=301,L]
Code modifié de tête à verifié, mais le principe fonctionne.

Sinon tu as aussi la voie du RewriteCond.
 
WRInaute discret
Alors là, je te remercie, ça marche !

J'ai juste modifier un peu, tes souvenirs n'étaient pas exacts :

Code:
RewriteRule ^$ %{QUERY_STRING} [C]
RewriteRule p=maitriseoeuvre http://www.maitrise-oeuvre-batiment.com/maitrise-oeuvre/maitrise-oeuvre.html? [R=301,L]

Voilà pas grand chose de changer :wink:

Merci encore
 
WRInaute discret
Bonjour,

Par contre, je viens de me rendre compte que quand on demande l'adresse http*//www*aceing*com et bien on tombe sur une erreur 404 aussi alors que si on demande http*//www*aceing*com/index.html et bien là ça marche !

Y aurait-il quelque chose de pas claire dans mon fichier ?

Voici le code complet :

Code:
RewriteEngine On
RewriteRule ^$ %{QUERY_STRING} [C]
RewriteRule p=maitriseoeuvre http://www.aceing.com/maitrise-oeuvre/maitrise-oeuvre.html? [R=301,L]
RewriteRule p=solutions http://www.aceing.com/maitrise-oeuvre/solutions-maitrise-oeuvre.html? [R=301,L]
RewriteRule p=references http://www.aceing.com/references/liste-references.html? [R=301,L]
RewriteRule p=images http://www.aceing.com/references/references-images.html? [R=301,L]
RewriteRule p=liens http://www.aceing.com/liens-utiles.html? [R=301,L]
RewriteRule p=contact http://www.aceing.com/contact.html? [R=301,L]
RewriteRule p=plan http://www.aceing.com/plan-acces-ace.html? [R=301,L]
RewriteRule /liste-references-([a-z_]*)-([0-9]*)\.html /references/liste-references.php?trier=$1&limit=$2 [L]
RewriteRule /liste-references-([a-z_]*)\.html /references/liste-references.php?trier=$1 [L]
RewriteRule /references-images-([a-z_]*)-([0-9]*)\.html /references/references-images.php?trier=$1&limit=$2 [L]
RewriteRule /references-images-([a-z_]*)\.html /references/references-images.php?trier=$1 [L]
RewriteRule /batiment-([0-9]*)\.html /references/batiment.php?id_bat=$1 [L]
RewriteRule /photos-([0-9]*)-([0-9]*)\.html /references/photos.php?id_bat=$1&limit=$2 [L]
RewriteRule (.*)\.html /$1.php [L]

Là j'ai publié le site mais ça ne gère pas car la page d'accueil est référencé forcément !

Merci d'avance
 
WRInaute passionné
Tu peux essayer ceci

Code:
RedirectMatch 301 ^/$ http://www.example.com/index.html

Ceci marche me semble t il (je l'utilise avec un répertoire /fr/ mais ca doit aussi marcher à la racine).
 
WRInaute discret
Bonjour,

J'ai changé les urls, merci !

Sinon, je pense que le rpoblème vient d'ailleurs parce que pourquoi faire une redirection 301 sur une page qui en fait existe et n'a pas changé de nom, là je comprends pas.

Il doit y avoir un soucis avec une autre règle mais laquelle !

Pour l'instant, j'ai mis ça mais c'est pas correct dans le raisonnement :

Code:
RewriteEngine On
RewriteRule ^$ %{QUERY_STRING} [C]
RewriteRule p=maitriseoeuvre /maitrise-oeuvre/maitrise-oeuvre.html? [R=301,L]
RewriteRule p=solutions /maitrise-oeuvre/solutions-maitrise-oeuvre.html? [R=301,L]
RewriteRule p=references /references/liste-references.html? [R=301,L]
RewriteRule p=images /references/references-images.html? [R=301,L]
RewriteRule p=liens /liens-utiles.html? [R=301,L]
RewriteRule p=contact /contact.html? [R=301,L]
RewriteRule p=plan /plan-acces-ace.html? [R=301,L]
RedirectMatch 301 ^/$ /index.html
RewriteRule /liste-references-([a-z_]*)-([0-9]*)\.html /references/liste-references.php?trier=$1&limit=$2 [L]
RewriteRule /liste-references-([a-z_]*)\.html /references/liste-references.php?trier=$1 [L]
RewriteRule /references-images-([a-z_]*)-([0-9]*)\.html /references/references-images.php?trier=$1&limit=$2 [L]
RewriteRule /references-images-([a-z_]*)\.html /references/references-images.php?trier=$1 [L]
RewriteRule /batiment-([0-9]*)\.html /references/batiment.php?id_bat=$1 [L]
RewriteRule /photos-([0-9]*)-([0-9]*)\.html /references/photos.php?id_bat=$1&limit=$2 [L]
RewriteRule (.*)\.html /$1.php [L]

Alors si quelqu'un voit pourquoi http*//www*aceing*com ne marche pas, ça m'intéresse :wink:
 
WRInaute discret
Non on tombe toujours sur index.html, je n'ai pas réussi à régler ce problème, si jamais tu as une idée, je suis preneuse :wink:
 
Discussions similaires
Haut