Pb URL rewriting avec les sous-dossiers

Nouveau WRInaute
Bonjour

Afin de rediriger mes anciennes pages pdf vers de nouvelles pages html, j'ai utilisé avec succès la règle suivante dans un fichier .htaccess

Code:
ErrorDocument     404         http://www.example.com/404vers301.php
RewriteEngine On
RewriteRule ^actualites/(.*)\.pdf$     http://www.example.com/fichiers/docs/$1.html [R=301,L]
RewriteRule ^Dossiers/(.*)\.pdf$     http://www.example.com/fichiers/docs/$1.html [R=301,L]

NB : Le fichier 404vers301 pointe sur la page d'acceuil du site (index.html)

- Si je cherche dans Google : -http://www.example.com/actualites/test.pdf
j'arrive avec bonheur à -http://www.example.com/fichiers/docs/test.html … Super !!

- Mais problème
Si je tape dans google l'adresse : -http://www.example.com/actualites/CP/test.pdf
je suis redirigé vers la page d'accueil … et non vers -http://www.example.com/fichiers/docs/test.html

Pourquoi inclure /CP/ dans ma recherche google ? Parce que c'était l'ancienne configuration du site qui est encore indexée dans certains annuaires.

J'ai donc essayé d'ajouter la ligne suivante :
Code:
RewriteRule ^actualites/CP/(.*)\.pdf$     http://www.example.com/fichiers/docs/$1.html [R=301,L]
ou encore
Code:
RewriteRule ^actualites\/CP\/(.*)\.pdf$     http://www.example.com/fichiers/docs/$1.html [R=301,L]
ou encore
Code:
RewriteRule CP/(.*)\.pdf$     http://www.example.com/fichiers/docs/$1.html [R=301,L]

Mais ça ne marche pas.

Pourriez-vous svp m'aider à trouver la bonne expression parce que je sèche depuis ce matin :(

Paul
 
WRInaute accro
Merci d'utiliser example.com et pas un nom de domaine qui n'existe pas...

Signé la modo qui en a marre d'éditer des messages
 
Nouveau WRInaute
Bonjour Marie-Aude

J'espérais une aide adulte et intègre pas une réponse de blasée.

De ce fait, une personne plus agréable et plus disponible pourrait-elle m'aider ?

Merci beaucoup

Paul
 
Olivier Duffez (admin)
Membre du personnel
Si tout ce qu'il y a à déplacer est dans /actualites/CP/, autant mettre les règles de réécriture/redirection dans un fichier .htaccess situé dans /actualites/CP/
Ce sera plus simple et plus efficace car cela ne surchargera pas le .htaccess de la racine du site.
Pour l'instant je ne vois pas bien ce qui pose pb dans tes règles de réécriture, désolé.

Concernant "Le fichier 404vers301 pointe sur la page d'acceuil du site (index.html)" je n'ai pas compris. Tant qu'à créer une page d'erreur 404 personnalisée, autant qu'elle affiche un message spécial qui explique à l'internaute ce qui s'est passé. Sinon, si tu ne veux pas créer de page personnalisée, autant indiquer directement qu'en cas de 404 c'est la home qu'il faut afficher.
 
Nouveau WRInaute
Bonjour

J'ai finalement trouvé la solution (a priori)
En fait il fallait écrire les règles de ré-écriture dans l'ordre

ici la bonne écriture est :
Code:
RewriteEngine On
RewriteRule ^actualites/CP/(.*)\.pdf$     http://www.example.com/fichiers/docs/$1.html [R=301,L]
RewriteRule ^actualites/(.*)\.pdf$     http://www.example.com/fichiers/docs/$1.html [R=301,L]
dans cet exemple si je cherche document -http://www.example.com/actualites/CP/test1.pdf il m'envoie avec succès sur -http://www.example.com/fichiers/docs/test1.html

Mais si j'écris les règles dans l'ordre inverse
Code:
RewriteEngine On
RewriteRule ^actualites/(.*)\.pdf$     http://www.example.com/fichiers/docs/$1.html [R=301,L]
RewriteRule ^actualites/CP/(.*)\.pdf$     http://www.example.com/fichiers/docs/$1.html [R=301,L]
la même demande donnera un message d'erreur car le fichier -http://www.example.com/fichiers/docs/CP/test1.html n'existe pas !!!

pour répondre à la question du fichier "404vers301"
celui-ci est un php pour envoyer vers l'accueil (modifié en l’occurrence) en modifiant le code d'erreur 404 en un code 301 (redirection permanente) - (en fait l'accueil en question est une page d’accueil du site personnalisée en plan de site)

Code:
<?php
header("Status: 301 Moved Permanently", false, 301);
header("Location: http://www.www.example.com/accueil404.html");
exit();
?>


Merci
 
Olivier Duffez (admin)
Membre du personnel
quel est l'intérêt de faire une 301 vers accueil404.html ? pourquoi ne pas l'indiquer directement dans la directive ErrorDocument ?
 
Nouveau WRInaute
Bonjour

J'ai fait cela car j'ai lu à cette page http://www.annuaire-info.com/referencement/errordocument-404/

Il est possible de transformer astucieusement l’instruction ErrorDocument 404 en redirection 301. Pour cela, il vous faudra utiliser cette ligne dans .htaccess :
ErrorDocument 404 /404vers301.php
Ici aussi une redirection aura lieu vers la page avec le plan du site, mais, cette fois, ce sera une redirection 301. C’est sans importance pour les visiteurs, mais, pour les robots de Google et des autres moteurs, c’est tout différent. Pour eux, le code HTTP 301 signifie que l’adresse demandée est périmée et qu’ils doivent la remplacer dans leur index par l’adresse de la redirection. Dans notre exemple, ce sera l’adresse du plan du site. Cette adresse récupérera tout le poids des backlinks (PageRank, link juice,…) des adresses erronées.


Etant très amateur dans le domaine ... j'ai suivi l'indication ...

Paul
 
Discussions similaires
Haut