rediriger pages html vers même adresse en php [RESOLU]

  • Auteur de la discussion Auteur de la discussion sam soul
  • Date de début Date de début
Bonjour,
pour pouvoir bénéficier de la fonction include, j' ai renommé toutes mes pages html en php et inséré le code pour l' include, tout marche.
Mais je n' ai pas encore uploadé ces pages pour la raison suivante:
Les visiteurs qui voudront accéder directement à mon site à l' aide de favoris ou par liens externes ( liens en html donc ) se retrouveront face à une erreur 404 ou multi choices.
Je cherche donc à savoir si il existe un moyen de rediriger automatiquement une adresse html vers la même mais en php ?
exemple:
ma-page.html
vers
ma-page.php
on peut le faire pour chaque page avec ceci:
Redirect permanent /ma-page.html http://www.mon-site.com/ma-page.php
seulement c' est plutôt laborieux on doit le faire pour chaque page, mission impossible.
D' autre part, est-ce que ce changement d' extension aura une influence sur le référencement ?
merci.
 
Teste d'abord si la réécriture d'URL fonctionne. Test aussi si PHP fonctionne, en uploadant tes pages php. Tant que tu n'a pas de lien vers elles, tu ne risque rien à les uploader.

Ensuite, tu met la règle suivante :

Code:
RewriteRule (.*)\.html $1.php [L,QSA]

Et tu laisse tes liens pointer vers les adresses .html

Si tu ne fais jamais de lien vers une adresse .php, tu n'as rien besoin de faire d'autre. Google ne verra jamais les adresses .php, donc pas de soucis de contenu dupliqué.
 
il faudra que je supprime les pages en html non ?
et concrètement les pages s' afficheront html ou php dans la barre d' adresse ?
 
sam soul a dit:
il faudra que je supprime les pages en html non ?
Même pas! Mais c'est plus clair si tu le fais.

sam soul a dit:
et concrètement les pages s' afficheront html ou php dans la barre d' adresse ?
Le contenu affiché sera celui des pages php, mais l'adresse dans le navigateur sera la page .html

Franchement, c'est le mieux. Ca te permettra de changer comme tu veux la façon dont le contenu de tes pages est produit, par exemple en faisant des pages php avec des paramatres, sans jamais changer l'adresse visible par tes visiteurs.

C'est ce que je fais sur mes sites, on ne voit pas php.
 
La solution donnée par Vap est la meilleure. Elle permet de ne pas avoir à modifier ses liens internes notamment, ce qui peut être suuuper long. Bien sur, aucun lien ne doit pointer vers les pages .php.
 
et au niveau référencement, vu que je vais supprimer les pages html pour y voir plus clair est-ce que ça aura une incidence.
sur webmasterhub, on me propse ceci:
Code:
RewriteEngine on
RewriteRule /?(.+)\.html  http://www.ledomaine.tld/$1.php [R=301,L]
quelles sont les différences ?
 
La plus grosse différence c'est le [R=301]. Avec ça, l'adresse affichée sera la php, eu lieu de la html. En faisant ça tu expose comment ton site est fait, ce dont tes visiteurs n'ont rien a cirer. En plus ça t'oblige a changer tous tes liens pour bien faire.

Deuxième différence, il n'y a pas QSA. Cette option te sera utile plus tard si tu veux ajouter des parametres, par exemple si tu fais des formulaires en méthode GET.

Sinon, le reste de la règle est juste plus compliqué sans rien apporter.
 
bon ok, je vais faire ça.
Juste une ou deux précisions avant de me lancer.
niveau référencement, est-ce qu' il y a une incidence ?
Tu me dis de tester si le réécriture d'URL fonctionne, concrêtement, on fait comment ?
Et pour lever toute ambiguité, la règle que tu me donnes est à mettre dans le fichier htaccess c' est ça ?
 
Lit ca : https://www.webrankinfo.com/dossiers/techniques/tutoriel-url-rewriting et ce tutoriel :https://www.webrankinfo.com/dossiers/techniques/tutoriel-url-rewriting

En particulier, fais le test donné dans une des pages du tutoriel.

ENsuite, si tu as fais le test et que la réécriture marche, tu met la règle que j'ai donnée dans un fichier appelé .htaccess à la racine de ton site. Si ti n'arrives pas à sauvegarder dans un fichier de ce n om, appelles le htaccess, charge le sur ton site, et renommes le en .htaccess dans ton site.

En général, pour que la réécriture marche, il suffit de mettre les choses suivantes dans le .htaccess:

Code:
Options +FollowSymLinks
RewriteEngine On

Du coup, ton .htaccess devrait ressembler a ce qui suit:

Code:
Options +FollowSymLinks
RewriteEngine On

RewriteRule (.*)\.html $1.php [L,QSA]
 
Ok merci, tout ça est très clair :wink:
La réecriture est bien prise en charge, je viens de tester.
par contre, niveau référencement est ce que ça craint ou il n' y a pas de risque et Google n' y verra que du feu ?
 
Google n'y verra que du feu si tu ne met pas R=301. Tous tes visiteurs n'y verrons que du feu d'ailleurs.
 
bonjour,
autre question sur ce thème.
J' ai actuellement des redirect permanent sur mon fichier htaccess et mes pages sont toujours en html.
par exemple pour le cas suivant:
Code:
Redirect permanent /adresse-A.html http://www.domaine.com/adresse-B.html
comment devrai-je faire mes nouvelles redirection étant donné que les pages html n' existeront plus.
est-ce qu' il suffi juste de remplacer la nouvelle adresse avec l' extension php dans le fichier htaccess ? n' y a t' il pas de risque de duplicate content ?
merci :wink:
 
sam soul a dit:
bonjour,
autre question sur ce thème.
J' ai actuellement des redirect permanent sur mon fichier htaccess et mes pages sont toujours en html.
par exemple pour le cas suivant:
Code:
Redirect permanent /adresse-A.html http://www.domaine.com/adresse-B.html
comment devrai-je faire mes nouvelles redirection étant donné que les pages html n' existeront plus.
est-ce qu' il suffi juste de remplacer la nouvelle adresse avec l' extension php dans le fichier htaccess ? n' y a t' il pas de risque de duplicate content ?
merci :wink:

Oui à la première question, non à la seconde.
 
Bonjour à tous,
je vais remonter ce sujet,.
Je récapitule:
- j' ai renommé toutes mes pages en php (anciennement html).
- j' ai crée un dossier test sur mon serveur et y ai uploader mes fichiers php.
- J' y ai également ajouté mon fichier htaccess avec la ligne de code que m' a conseillé Vap:
Code:
Options +FollowSymLinks 
RewriteEngine On 

RewriteRule (.*)\.html $1.php [L,QSA]
maleureusement, ça ne marche pas, le serveur me renvoie vers ma page 404.
Qu' est ce que j' ai loupé ?
 
A tester:

Code:
RewriteRule ^(.*)\.html$ /$1.php [QSA,L]

ou

Code:
RewriteRule (.*)\.html$ /$1.php [QSA,L]
 
Bonjour et merci de ton aide malheureusement dans les deux cas ça me renvoie cette fois vers un multi choice. :cry:
 
entre quelles règles ? j' ai tout supprimé ce qu' il y avait dans le htaccess et mis tour à tour ce que tu m' as proposé.
Je ne vois pas quel est ce conflit. :cry:
EDIT:
j' ai essayé également ça:
Code:
Options +FollowSymlinks 
RewriteEngine on 

RewriteRule ^(.*)\.html$ /$1.php [QSA,L,R=301]
mais ça me donne une erreur 404.
 
Les règles de Yoyos S me paraissent correctes.

sam soul a dit:
j' ai essayé également ça:
Code:
Options +FollowSymlinks 
RewriteEngine on 

RewriteRule ^(.*)\.html$ /$1.php [QSA,L,R=301]
mais ça me donne une erreur 404.

Normalement, si ta règle est bien appliquée par le serveur, l'adresse aue tu tapes dans ton navigateur (par exemple -htttp://www.ndd.com/page.html) est modifiée, et tu vois la nouvelle adresse à la place dans ton navigateur (par exemple -htttp://www.ndd.com/page.php)

Donc, est-ce que tu vois l'adresse changer?

Si tu la vois changer et que tu as une erreur 404, c'est que la nouvelle adresse ne correspond pas a une page qui existe.
 
j' ai essayé avec ça:
Code:
Options +FollowSymlinks 
RewriteEngine on 

RewriteRule ^(.*)\.html$ /$1.php [QSA,L,R=301]
il n' y a que ça dans mon htaccess.
quand je clique sur un lien, l' adresse ciblée s' affiche bien dans la barre d' adresse (en html, normal les liens sont en html) mais ça me mets ceci:
Code:
Multiple Choices
The document name you requested (//test/test-php/traitement-video.html) could not be found on this server. However, we found documents with names similar to the one you requested.
Available documents:
    * //test/test-php/traitement-video.php (common basename) 
Please consider informing the owner of the referring page about the broken link.
ce que je remarque, c' est que quand je tape l' adresse vers le dossier test-php, c' est la page index.php qui s' affiche, elle n' est pas réecrite en html. Ce qui n' est pas normal je pense, elle devrait apparaître en html normalement.
 
Pourquoi mettre ,R=301 ? t'as essayé sans ? Voir si les pages .html fonctionnaient en affichant en fait les pages en php ?
 
j' ai donc essayé:
Options +FollowSymLinks
RewriteEngine On

RewriteRule (.*)\.html $1.php [L,QSA]

ça me donne cette fois ma page 404.
est-ce qu' il n' y aurait pas un conflit avec le htaccess ou les pages originales de mon site placées à la racine de mon site ? Car là je fais des tests dans un autre dossier de mon site.
 
les règles qui ont été données marchent pour des pages dans le même répertoire que celui ou est placé le fichier .htaccess .

Si tu fais tes tests dans un sous répertoire, met le .htaccess dans le meme sous répertoire.

ce que je remarque, c' est que quand je tape l' adresse vers le dossier test-php, c' est la page index.php qui s' affiche, elle n' est pas réecrite en html. Ce qui n' est pas normal je pense, elle devrait apparaître en html normalement.

Non, la réécriture que les règles font vont de html vers php, pas l'inverse.

L'idée est que les liens qui pointent vers des pages de ton site pointent vers des pages html, et qu'en interne, ces pages html sont redirigées vers les pages php.
 
Vap a dit:
les règles qui ont été données marchent pour des pages dans le même répertoire que celui ou est placé le fichier .htaccess .
Si tu fais tes tests dans un sous répertoire, met le .htaccess dans le meme sous répertoire.
oui ça je sais bien, je test tout dans un même répertoire nommé test-php.
Non, la réécriture que les règles font vont de html vers php, pas l'inverse.
je ne comprends plus là. je ne veux pas réecrire mes page html en php. Mes pages ont été renommées en php pour bénéficier de la fonction include entre autres. Les pages originales en html ont été supprimées dans ce répertoire test-php.
Je voudrais (c' est ce qui m' a été conseillé ici même) que mes pages php soient réecrite en html pour ne pas perdre niveau référencement, duplicate content etc, etc...
L'idée est que les liens qui pointent vers des pages de ton site pointent vers des pages html, et qu'en interne, ces pages html sont redirigées vers les pages php.
tout à fait, mais réecrite en html.
Tout ce qu' il faudrait c' est lorsqu' un visiteur tape http://mon-domaine/ma-page.html, il soit redirigé vers http://mon-domaine/ma-page.php et que cette adresse s' affiche en http://mon-domaine/ma-page.html
 
sam soul a dit:
Tout ce qu' il faudrait c' est lorsqu' un visiteur tape http://mon-domaine/ma-page.html, il soit redirigé vers http://mon-domaine/ma-page.php et que cette adresse s' affiche en http://mon-domaine/ma-page.html

Exactement, et c'est ce que font les règles données par yoyos.


Maintenant qu'on sait que c'est dans le répertoire test-php, il faut, dans le .htaccess situé dans ce répertoire, entrer ce qui suit:

Code:
Options +FollowSymlinks
RewriteEngine on

RewriteRule ^(.*)\.html$ /test-php/$1.php [QSA,L]

Ou alors, (pas testé) utiliser RewriteBase :


Code:
Options +FollowSymlinks
RewriteEngine on

RewriteBase /

RewriteRule ^(.*)\.html$ /$1.php [QSA,L]
 
hourra !!!!
la première solution me donne une erreur 404.
la deuxième......fonctionne, j' ai juste adapté en ajoutant test/test-php qui est le répertoire dans lequel je travail.
ça y est mes liens pointent vers mes pages php qui sont réecrites en html.
Merci infiniment !!! :lol:
Petite question annexe mais quand même avec ma préoccupation d' origine:
est-ce que Google va y perdre son latin et sanctionner mes pages au niveau référencement ?
 
IL n'y aura aucune pénalité s'il ny a pas de contenu duppliqué. Pour cela il faut que tes liens pointent toujours vers les pages html, et jamais vers les pages php directement. Comme ça, google (et les autres visiteurs) ne sauroont jamais qu'il y a des pages php.
 
Bonjour,
J'aimerais savoir comment faire si on a le problème du contenu dupliqué?

J'ai fait l'erreur de faire pointer mes liens internes vers les pages php mais en lisant ce post j'ai tout de suite changé. Malheureusement, trop tard. Aujourd'hui j'ai mes pages php qui sont indexées et mes pages html le sont toujours.

Des solutions?

Merci à vous.
 
Bonjour,
Pour les mêmes raisons que sam soul, (utilisation de la fn include) j'ai modifié mon site avec des pages en .php.
Ce site à 12 ans, il est bien référencé, et j'ai voulu faire des redirections 301 dans les fichiers htaccess de chaque repertoire.
Suite à un cours chez Ranking Metrics en 2009, j'avais déjà fait cette manip, lors de la précédente mise a jour de ce site, et ceci sans aucun problème. J'ajoute que l'hébergement est le même.
Mais cette fois, des choses bizarres se passent: (j'utilise la même syntaxe, qu'auparavant):
- htaccess sous la racine:
Code:
SetEnv PHP_VER 5
RewriteEngine on
RewriteRule ^cyclo\.htm$ /location-gites/cevennes-cyclotourisme.php [R=301]
: Ca marche.
Si je rajoute une ligne: Erreur Serveur 500. Exemple:
La ligne:
Code:
RewriteRule ^index\.html$ /location-gites/villagedegites.php [R=301]

Dans le repertoire /location-gites , quelquesoit la RewriteRule: Erreur 500
Alors que dans un autre repertoire: frankrijk, le htaccess suivant fonctionne sans problème:
Code:
SetEnv PHP_VER 5
RewriteEngine on
RewriteRule ^vakantiepark-cevennen-tennis-baan\.htm$ /frankrijk/vakantiepark-cevennen-tennis-baan.php [R=301]
RewriteRule ^vakantiepark-cevennen-zwembad\.htm$ /frankrijk/vakantiepark-cevennen-zwembad.php [R=301]

J'ai essayé des tas de variantes sans succès. Cela me parait illogique et pourtant...
Quelqu'un peut il m'aider ??
Merci d'avance.
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut