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

WRInaute discret
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.
 
WRInaute impliqué
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é.
 
WRInaute discret
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 ?
 
WRInaute impliqué
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.
 
WRInaute accro
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.
 
WRInaute discret
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 ?
 
WRInaute impliqué
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.
 
WRInaute discret
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 ?
 
WRInaute impliqué
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]
 
WRInaute discret
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 ?
 
WRInaute impliqué
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.
 
WRInaute discret
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:
 
WRInaute impliqué
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.
 
WRInaute discret
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é ?
 
WRInaute accro
A tester:

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

ou

Code:
RewriteRule (.*)\.html$ /$1.php [QSA,L]
 
WRInaute discret
Bonjour et merci de ton aide malheureusement dans les deux cas ça me renvoie cette fois vers un multi choice. :cry:
 
WRInaute discret
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.
 
WRInaute impliqué
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.
 
WRInaute discret
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.
 
WRInaute accro
Pourquoi mettre ,R=301 ? t'as essayé sans ? Voir si les pages .html fonctionnaient en affichant en fait les pages en php ?
 
WRInaute discret
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.
 
WRInaute impliqué
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.
 
WRInaute discret
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
 
WRInaute impliqué
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]
 
WRInaute discret
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 ?
 
WRInaute impliqué
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.
 
Nouveau WRInaute
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.
 
Nouveau WRInaute
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.
 
Discussions similaires
Haut