(reprise du message précédent)
bonsoir,
juste pour te rappeller que si tu redirige une requete page.html vers page.php , dans le navigateur et pour le moteur de recherche il s'agit toujours de page.html . la redirection 301 est inutile et c'est logique : remplacer : www.monsite.com/page.html par www.monsite.com/page.html ne sert pas a grand chose . il n'ya que ton serveur qui selon la regle ira chercher : page.php .
Une redirection 301 n'a d'interet que lorsque l'adresse change dans la barre d'adresse ou pour les moteur de recherche (ou bien que tu renvoi son contenu dans une page d'un autre nom) .
(desolé je reprend mon exemple corrigé avec la bonne remarque de Gizz ):
et
ne fait aucune difference et la redirection 301 du second est quasi inutile .
scenario:
1) je demande index.html : elle existe donc elle s'affiche
2) je demande index.html mais elle n'existe pas car réecrite en index.php : index.html s'affiche selon la requete de mon navigateur (alors que le serveur nous sert index.php).
3) je demande index.html , elle n'existe pas et index.php non plus : j'ai le droit a une page d'erreur car , pour le navigateur et selon la regle appliqué par le serveur index.html n'existe pas .
4) je demande index.php qui existe et s'affiche ... oups , si je demande index.html elle existera aussi virtuellement de par ma regle et elle sera identique a index.php .
4) pose un probleme si tu grades deux version d'un fichier du m^me non avec les deux extensiosn, mais si tu ne souhaite annuler la regle que dans un seul dossier , il te suffit toujours de tester que le ficher demandé existe ou pas :
en gros depuis la racine tu oblige le passage html vers php (uniquement pour le serveur ) avec :
et dans le dossier /classic:
va simplement annuler la regle : html -> php
si tu veut garder les deux possible dans ce repertoire et sous repertoires :
( Comme je ne maitrise pas toujours bien la porté des regex de l'urlrewriting et que un bouclage infini est toujours probable , je suis partisan des regle les plus simples possibles et qui se stoppent sitot que possible .. a tord ou a raison )
GC
bonsoir,
juste pour te rappeller que si tu redirige une requete page.html vers page.php , dans le navigateur et pour le moteur de recherche il s'agit toujours de page.html . la redirection 301 est inutile et c'est logique : remplacer : www.monsite.com/page.html par www.monsite.com/page.html ne sert pas a grand chose . il n'ya que ton serveur qui selon la regle ira chercher : page.php .
Une redirection 301 n'a d'interet que lorsque l'adresse change dans la barre d'adresse ou pour les moteur de recherche (ou bien que tu renvoi son contenu dans une page d'un autre nom) .
(desolé je reprend mon exemple corrigé avec la bonne remarque de Gizz ):
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)\.html?$ $1.php?%{QUERY_STRING} [L]
et
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)\..html?$ $1.php?%{QUERY_STRING} [L,301]
ne fait aucune difference et la redirection 301 du second est quasi inutile .
scenario:
1) je demande index.html : elle existe donc elle s'affiche
2) je demande index.html mais elle n'existe pas car réecrite en index.php : index.html s'affiche selon la requete de mon navigateur (alors que le serveur nous sert index.php).
3) je demande index.html , elle n'existe pas et index.php non plus : j'ai le droit a une page d'erreur car , pour le navigateur et selon la regle appliqué par le serveur index.html n'existe pas .
4) je demande index.php qui existe et s'affiche ... oups , si je demande index.html elle existera aussi virtuellement de par ma regle et elle sera identique a index.php .
4) pose un probleme si tu grades deux version d'un fichier du m^me non avec les deux extensiosn, mais si tu ne souhaite annuler la regle que dans un seul dossier , il te suffit toujours de tester que le ficher demandé existe ou pas :
en gros depuis la racine tu oblige le passage html vers php (uniquement pour le serveur ) avec :
RewriteEngine on
RewriteRule ^(.*)\.html?$ $1.php?%{QUERY_STRING} [L]
et dans le dossier /classic:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
va simplement annuler la regle : html -> php
si tu veut garder les deux possible dans ce repertoire et sous repertoires :
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)\.html?$ $1.php?%{QUERY_STRING} [L]
( Comme je ne maitrise pas toujours bien la porté des regex de l'urlrewriting et que un bouclage infini est toujours probable , je suis partisan des regle les plus simples possibles et qui se stoppent sitot que possible .. a tord ou a raison )
GC