Pages :
(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 ):


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
Merci gc-nomade.
Ta réponse me laisse perplexe car en bon novice que je suis, je différencie mal les fonctions Redirect permanent et l'url rewriting.

En l'état de mes connaissances, le redirect est un suivi automatique de courrier alors que le rewrite est une modification/réécriture de l'adresse "à la volée" (notamment utilisée pour les adresses php dynamiques et complexes de manière à les rendre plus "intelligibles"). Pour la 301, j'ai compris que ça ne s'applique pas dans mon cas.

J'ai le sentiment que les explications de ce que je demande ne sont pas précises alors je vais tenter de simplifier : voici un exemple d'une redirection permanente déjà en place sur mon site suite à une refonte du plan ayant entrainé la fusion de 2 pages (et donc la disparition de l'une d'elles). Il y a 2 redirections, une par langue :

Redirect permanent /modelisme.html  http://www.blackholesun.fr/RC_Models.html
 
Redirect permanent /modelisme_US.html  http://www.blackholesun.fr/RC_Models_US.html
 


Ca fonctionne très exactement comme je le souhaite (ie automatiquement et la barre d'adresse du navigateur indique bien l'adresse de la nouvelle page).

Ce que je souhaite c'est obtenir très exactement ce même résultat avec le passage en extension php. Donc, de manière basique, il me faudrait simplement ajouter ceci à mon htaccess :


Redirect permanent /modelisme.html  http://www.blackholesun.fr/RC_Models.html
 
Redirect permanent /modelisme_US.html  http://www.blackholesun.fr/RC_Models_US.html
 

Redirect permanent /RC_Models.html  http://www.blackholesun.fr/RC_Models.php
 
Redirect permanent /RC_Models_US.html  http://www.blackholesun.fr/RC_Models_US.php
 


Le truc c'est que j'ai en tout 112 pages à traiter, donc 112 lignes à insérer dans le htaccess Smiley biggol J'ai aussi noté qu'une "règle d'or" du htaccess veut qu'il est hautement recommandé de synthétiser les instructions en le moins de lignes possibles : j'y vois une logique plus belle, une probable plus grande rapidité de traitement et un excellent moyen de soigner le poil au creux de ma main Smiley biggrin

Aujourd'hui, mon site contient exclusivement des pages .html y compris dans /classic. Des liens sur d'autres sites pointent directement sur mes pages (en .html donc).
Demain, mon site contiendra exclusivement des pages .php (seule l'extension changera), il n'y aura plus aucune page .html à l'exception du dossier /classic qui lui ne change pas d'un iota (il reste exclusivement en .html et il n'y aura pas de .php).

Donc pour résumer, ce que je souhaite pour la partie principale de mon site (pour l'exception /classic, je pense que le cas est résolu) :
- appel de mon site à partir d'un lien référent pointant une page .html => le navigateur affiche directement cette même page en .php (y compris dans la barre d'adresse)
- appel de mon site à partir d'un lien (plus récent donc) pointant sur une page .php => le navigateur affiche naturellement la page en .php

Le sens de ma démarche est le suivant :
- rester honnête vis-à-vis de mes lecteurs en ne leur faisant pas croire à une page .html alors qu'il s'agit d'une .php
- que les nouveaux liens référents (et surtout les bookmarks de mes visiteurs) soient progressivement mis à jour avec la bonne adresse (ie en .php)
- que mes visiteurs ne soient pas pénalisés par une 404 s'ils suivent un lien référent (ou bookmark) en .html parce j'ai décidé de tout renommer en .php (ie, ce n'est pas à eux d'assumer mes bidouillages mais à moi de veiller à leur confort).

Merci de votre aide
Bonjour,

a écrit :

- appel de mon site à partir d'un lien référent pointant une page .html => le navigateur affiche directement cette même page en .php (y compris dans la barre d'adresse)


tu peux en premier lieu conserver l'urlrewriting (si les pages html n'existe pas ) pour que le serveur pointe automatiquement sur une page php ou tu pourras faire usage de la fonction header().
En testant $_SERVER['REQUEST_URI'] cela te permettra de savoir si l'adresse demandé est une page html ou php et ainsi de faire une redirection qui va s'afficher dans la barre d'adresse (tu peut aussi envoyé un code 301 pour indiqué le deplacement/remplacement permanent de tes pages html ).

Tu peut aussi en profiter a l'occasion forcer un passage vers index.php si l'adresse ne pointe que sur ton domaine (ou un repertoire). www.monsite.com/ -> www.monsite.com/index.php

avec un include en tout debut de chaque fichier , tu peut automatiser ce test sur toutes tes pages et rediriger les visiteur vers les page php (ou index.php a l'atterssage sur ton site Smiley smile ) .

a écrit :

- appel de mon site à partir d'un lien (plus récent donc) pointant sur une page .php => le navigateur affiche naturellement la page en .php

l'url rewriting ne sera pas sollicité ni utile
la fonction header() ne devrait pas être sollicité non plus.

Cordialement

GC
Je suis désolé, mais je ne comprends plus rien Smiley decu

Mes pages html n'existeront plus puisqu'elles seront toutes renommées en *.php
Je ne comprends donc pas pourquoi réécrire les adresses en php (la fonction url rewriting) au lieu de les rerouter directement sur leur version .php (redirect permanent).
Donc forcément, je ne comprends pas l'utilité de $_SERVER['REQUEST_URI'] : déterminer si le visiteur arrive d'un lien en .html ou en .php ne m'intéresse pas. Je veux uniquement qu'il débouche systématiquement sur la .php.

Quant à l'include en début de chaque fichier, il servirait à quoi ? Le seul code que j'insère systématiquement au tout début de mes fichiers .php (ex-html renommés) est le suivant :

<?php header( 'Content-Type: text/html; charset=UTF-8' ); ?>


Il ne sert qu'à assurer le support du jeu de caractères (oui, moi j'écris et non pas j'&eacute;cris : triste habitude d'un clavier normalement constitué Smiley cligne ).

Là, j'avoue que j'ai le sentiment d'avoir échoué ma barque sur la plage et d'attaquer la falaise à la rame Smiley biggol
Modifié par Black Hole Sun (13 Jun 2010 - 02:49)
bonsoir,

(de retour de WE).

j'ai aussi du mal a comprendre ce que tu veux ?

lien ou favoris html entrant , que veux tu en faire ? page d'erreur 404 ou renvoi vers la nouvelle page en .php

tu veux conserver tes liens en html ou tout rediriger en 301 vers .php ( a l'exeption d'un dossier, si j'ai bien compris, que tu veut garder en .html autant dans la barre d'adresse que sur le ftp ).


Pour le header() ce que je te proposai c'etait :
en amont : test sur quel page demandé ? .html ou .php (et tu en profite pour eventuellement obliger le passage par index.php si '/' pas de nom de fichier dans l'url demandée)
si html alors:

header("Status : 301 Moved Permanently");
header("Location:  http://www.votresite.com/unepage.php");  

Ce qui va simplement recharger le même fichier mais mettre a jour la barre d'adresse dans le navigateur et indiquer la redirection permanente .

si php , pas de redirection a faire bien evidemment ...

mais pour que ça marche , il me semble qu'il te faut d'abord gerer tes page html qui n'existent plus (lien entrant et passage des robots entre autres ) avec de l'urlrewriting par exemple, ou addtype, ou ecrire tes 100 et quelques redirect permanent dans ton fichier htaccess, ou gerer ça a partir d'une page d'erreur , ou autre ...



$_SERVER['REQUEST_URI']; te renvoi L'URI qui a été fourni pour accéder à cette page. Par exemple : '/index.html'. un simple test sur les derniers caractéres facilite la chose.

Cordialement
GC
Modifié par gc-nomade (13 Jun 2010 - 21:16)
Après vérification de ma part il semble que ce que tu veux soit bien:

RewriteEngine on
RedirectMatch 301 ^(.*)\.html$ $1.php [L]


Premièrement tu ne veut pas un URLrewritting tu veut une redirection donc tu veut que le serveur informe le navigateur que l'adresse n'est pas/plus la bonne et qu'il indique la nouvelle. Donc tu veut faire une RedirectMatch (redirection selon une expression régulière... ce qui est le cas ici). TU veut qu'un code 301 soit indiqué (qui indique que la ressource demandé à changer de place de façon permanente).

Pour l'expression régulière, gc-nomade te donne ceci:

^(.*)\..html?$ $1.php?%{QUERY_STRING}


Je comprend son expression, mais celle-ci indique qu'il peut y avoir des variables inclus dans l'adresse comme par exempe: page.html?var1=valeur1&var2=valeur2. Dans ton cas, puisque tes pages étaient anciennement en html et non en php, elles n'avaient pas de variables passé par URL. Tes nouvelles adresses pourraient en avoir puisque maintenant tu utilise php, mais pas tes anciennes et ce que tu veux faire c'est simplement rediriger des anciennes adresses. C'est pour cela que :

^(.*)\.html$ $1.php


Devient l'expression la plus simple qui correspond à l'ensemble de tes besoins. Pour le dossier ou tu ne veut pas que les pages soit redirigé, je crois que de créer un .htaccess dans se dossier et d'y écrire:
RewriteEngine off

Cela devrait annuler toutes les règles du dossier principal. Je sais aussi que le seul fait de créer un .htaccess dans un sous dossier peut annuler certaines règles dans ce sous dossier.

Essai et si ça ne fonctionne pas comme tu veux, préviens nous! Bonne journée!
Merci pour les réponses.
Je viens de faire plusieurs tests et je ne sais plus comment je m'appelle.

Comme mon .htaccess n'est pas vide, j'ai testé différentes méthodes toujours à partir du code de gizz :
RewriteEngine on

RedirectMatch 301 ^(.*)\.html$ $1.php [L]


J'ai placé ce code tout au début de mon .htaccess=> erreur 500
J'ai intégralement vidé mon .htaccess pour ne laisser que le code de gizz => erreur 500

Donc, pas moyen d'arriver à quoi que ce soit, mais dès que je remets mon .htaccess "de base", tout refonctionne (ie index.html alors que le fichier n'existe pas => erreur 404 et index.php => ça s'affiche).

Pour faire au plus simple, j'ai une redirection qui fonctionne et c'est celle-ci :

Redirect permanent /modelisme.html  http://www.blackholesun.fr/RC_Models.html


Un appel de /modelisme.html envoie directement sur RC_Models.html : c'est parfait.

Maintenant, RC_Models.html disparait et seule RC_Models.php existe : il me faudrait donc ce code selon toute logique bête et méchante :
Redirect permanent /RC_Models.html  http://www.blackholesun.fr/RC_Models.php


Sauf que si je mets ça dans mon .htaccess, la page ne s'affiche jamais (ça charge pendant des heures et rien). Pire : je n'atteins plus aucun site hébergé sur le serveur sur lequel se trouve mon site mais tout le reste du web reste accessible. Pire : toutes les machines de mon réseau local se trouvent affectées par ce comportement étrange. Ca dure 5-10 minutes, puis la situation revient à la normale sur toutes les machines du réseau (ie j'atteins tous les sites y compris ceux hébergés sur le même serveur que le mien).
Plus drôle : pendant tout le temps où je ne peux plus accéder à un seul site hébergé sur ce serveur, ma connexion FTP avec ce serveur reste active.

Enfin, mais là je ne suis pas sûr de l'effet, dès que je remets mon .htaccess "de base" (via ma connexion FTP restée active), tout redevient disponible immédiatement (mais ça pourrait aussi être une coïncidence).

Mon htaccess "de base", c'est ça :
a écrit :

Redirect permanent /modelisme.html http://www.blackholesun.fr/RC_Models.html
Redirect permanent /modelisme_US.html http://www.blackholesun.fr/RC_Models_US.html

Options +FollowSymlinks
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://www\.blackholesun\.fr/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://test.blackholesun.fr/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.vintage-rc.org/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.prog-6.com/loevenbruck/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://cactuszebest.free.fr/.*$ [NC]
RewriteRule .*\.(jpg|jpeg|gif|png)$ http://bhs.online.free.fr/no-hotlink.jpg [R,NC]


Les rewriteCond sont un code que j'ai trouvé me permettant d'interdire le hotlink des images de mon site (suite à un pillage en règle, j'ai dû mettre ça en place). Les adresses listées sont donc celles des sites autorisés pour faire du hotlink sur mes images et la dernière ligne indique quoi renvoyer si un site non autorisé pointe directement une image de mon site pour l'afficher.

Voilà, je suis complètement perdu. Dès que je tente d'insérer un code concernant la redirection de html vers php, je crée un monstre qui affecte non seulement mon pc mais également ceux de mon réseau (connectés sur la Freebox en mode routeur / ip locales fixes et dégroupage total). La redirection permanente pour une simple page html qui a disparu vers une page html de remplacement fonctionne. La même ligne pour diriger cette même page html (non présente sur le site) vers la même en php (présente), ça fait tout planter.

heu... oskour Smiley biggol
Je viens de découvrir quelque chose :
Redirect permanent /RC_Models.html   http://www.blackholesun.fr/RC_Models.php


Ce htaccess fonctionne si je le fais sur mon site. Or tous mes tests, je les fais sur http://test.blackholesun.fr/

Je ne mesure pas encore la portée de ce "détail" que je viens de découvrir, mais lorsque je testais
Redirect permanent /RC_Models.html   http://www.blackholesun.fr/RC_Models.php

j'avais cette fameuse boucle.

Si je comprends bien la logique de ce 2ème code .htaccess, je demandais une page html qui existe sur mon site pour la rediriger vers une page qui n'existe pas sur mon site puisqu'elle n'existe que sur mon site de test http://test.blackholesun.fr/
Maintenant que j'entrevois le problème, j'aurais pensé que le serveur aurait renvoyé une 404 et non une 500 : apparemment, ma boulette était plus grave que je ne le pensais.

Donc en clair, depuis le début je suis sur une erreur de pure logique qui mélange 2 emplacements distincts.

Mon .htaccess doit donc être celui que gizz m'indiquait :
RewriteEngine on 
 
RedirectMatch 301 ^(.*)\.html$ $1.php [L]


Cependant, il doit être sur mon site pour fonctionner et non pas sur mon site de test. Ce qui fait que je ne peux pas vérifier que ce code exécute exactement ce que je souhaite.
Je ne suis pas chaud pour attaquer ma transition html=>php sans tester auparavant, surtout parce que je vais introduire beaucoup de modifications dans toutes mes pages pour mettre en application ce que vous m'avez appris plus haut (l'include de mon menu, du footer etc...).

Est-ce qu'il existe une possibilité pour que l'htaccess soit adapté à mon site de test de manière à ce que je puisse le valider ?
bonjour,

Tu peut tester tes htaccess dans des sous-repertoires pour ne pas les appliquer a l'ensemble du site par exemple.

Ton sous-domaine tourne sur le même hebergement , tes test sont en principe fiables , il te suffira de remettre a jour tes redirections sur le htaccess du site principal.

GC

<ps> Pour les query string (variable get par l'url) , si tu n'avais aucun formulaire en methode="get" ou de javascript ou script "ajax" usant du passage de variable dans l'url , tu n'en as effectivement pas besoin Smiley smile
C'est peut être l'ordre des choses... je mettrais ton redirect match avant tes conditions de réécriture. Et j'ajouterais un L a ta réécriture pour les images.

Redirect permanent /modelisme.html  http://www.blackholesun.fr/RC_Models.html
 
Redirect permanent /modelisme_US.html  http://www.blackholesun.fr/RC_Models_US.html
 

Options +FollowSymlinks
RewriteEngine on  
RedirectMatch 301 ^(.*)\.html$  http://www.blackholesun.fr/$1.php  [L]
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://www\.blackholesun\.fr/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://test.blackholesun.fr/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.vintage-rc.org/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.prog-6.com/loevenbruck/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://cactuszebest.free.fr/.*$ [NC]
RewriteRule .*\.(jpg|jpeg|gif|png)$  http://bhs.online.free.fr/no-hotlink.jpg  [R,L,NC]

Ou avec une règle de réécriture au lieu du redirect mais qui redirect dans les flags:


Redirect permanent /modelisme.html  http://www.blackholesun.fr/RC_Models.html
 
Redirect permanent /modelisme_US.html  http://www.blackholesun.fr/RC_Models_US.html
 

Options +FollowSymlinks
RewriteEngine on  
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://www\.blackholesun\.fr/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://test.blackholesun.fr/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.vintage-rc.org/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.prog-6.com/loevenbruck/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://cactuszebest.free.fr/.*$ [NC]
RewriteRule .*\.(jpg|jpeg|gif|png)$  http://bhs.online.free.fr/no-hotlink.jpg  [R,L,NC]
RewriteRule ^(.*)\.html$  http://www.blackholesun.fr/$1.php  [R=301,L,NC]


Mais fait attention, théoriquement cela va peut-être faire effet sur tout tes autres sites.
Modifié par gizz (15 Jun 2010 - 15:14)
Merci gizz.

Pour le moment, je teste ceci (adapté comme il faut j'espère pour mon site de test) :

RewriteEngine on  
RedirectMatch (.*)\.html$  http://test.blackholesun.fr/$1.php  [L]


Ce code fonctionne (presque) bien : je passe index.html => index.php sans coup férir et depuis un lien de page en html (qui n'existe pas), j'arrive bien sur la page en php (qui elle existe). Ce dernier point est le plus important puisqu'à terme, mon site n'aura plus de html et uniquement des php.
(presque) parce que ça m'ajoute un / lors du passage html => php ce qui me donne une URL dans la barre du navigateur en : http://test.blackholesun.fr//index.php

On touche la solution Smiley smile

De plus, le fait d'avoir supprimé le 301 et le ^ précédent (.*)\.html$ a eu pour effet de supprimer les erreurs 500 : je ne m'explique pas pourquoi, mais c'est ce qui se produit.
Modifié par Black Hole Sun (16 Jun 2010 - 01:50)
ça y est, je tiens ma redirection :

RewriteEngine on   
RedirectMatch (.*)\.html$   http://test.blackholesun.fr$1.php   [L]


La différence est le / entre mon nom de domaine et l'expression $1.php. A présent, je n'ai plus ce fameux / qui surgit lorsque j'entre par une page html qui est aussitôt redirigée sur une php.

Pour la mise en place définitive sur mon site, le code sera donc celui précédemment indiqué par gizz :
RewriteEngine on  
  
RedirectMatch (.*)\.html$ $1.php [L]


Ce point est maintenant résolu : un grand merci à tous.

Je voudrais m'assurer qu'un nouveau bout de code que je viens de faire est correct svp : il passe au W3C mais j'aimerais m'assurer que je l'ai fait dans les formes.
En début de page, j'insère ce code (j'ai volontairement laissé les balises qui encadrent le code pour que vous puissiez situer précisément l'emplacement dans la page) :
</head>
<?php
$publication = "21 janvier 2006";
$modification = "07 juin 2010";
?>
<body>


En fin de page, j'ai inclus cette ligne :
Première publication : <?php echo $publication ?><br />Dernière modification : <?php echo $modification ?>


Mon objectif est le suivant :
En début de page, je déclare à la main les dates (propres à chaque page et susceptibles de changer), et en fin de page, j'ai le code qui va rechercher ces valeurs pour les insérer. Ca semble un peu inutile à premier abord, mais en réalité, le bas de page où l'insertion se fait est un bloc qui se répète sur toutes mes pages. Donc j'ai pensé à ma fonction préférée 'include' pour me simplifier la vie et seules les dates qui sont les uniques variables propres à chaque page dans ce bloc seront dans la page. Ceci me permet également de faire aisément mes 2 version de ce boc (FR et US) pour le fichier appelé par include.

Est-ce correct ?
Je ne vois rien qui ne soit pas correct dans cela. C'est une utilisation très basique du PHP. D'ailleurs ton code:

<?php 
$publication = "21 janvier 2006"; 
$modification = "07 juin 2010"; 
?> 


tu pourrais le mettre n'importe où dans ton fichier principal. Tu à choisi entre le head et le body, ce qui est correct, mais ça aurait aussi pu être au début complètement ou autre. Place le où il te sera le plus facile pour toi de le retrouver pour le modifier. Si je comprend bien, le but est d'indiqué les mises à jours de la page. Dans un CMS PHP complet cette fonction pourrais être automatisé, mais allons y par étape, pour le moment ton site est plus un site HTML amélioré par quelques fonctionnalités PHP qu'un vrai site PHP et je ne sais pas si ton intention est d'apprendre la programmation plus en profondeur.

Pour revenir à ton redirect. Maintenant il n'indique plus que c'est un redirect 301 par contre. Tu a essayé en replaçant le 301 sans le ^ ou en ajoutant R=301 avec le [L,R=301]? Sinon au moins sa fonctionne! Bonne journée!
Merci gizz.

Le code correspond bien aux dates de mise à jour de mes pages, mais je ne peux le faire automatiquement : la date de première publication n'est généralement pas du tout la même que celle de la création (que j'indique dans le meta name) parce que je suis pas un rapide Smiley rolleyes
La date de dernière modification n'est changée qu'en cas de réelle modification sur l'article et ne correspond donc pas forcément à la date de modification du fichier (la modification d'un lien html en php ou la correction d'une faute d'orthographe ne représentent pas ce que je considère comme une modification du contenu).

Si le placement du code est OK, alors là où il est, c'est très pratique pour moi.

Pour le redirect, je viens d'introduire le [L,R=301] et ô miracle, pas d'erreur 500 à l'horizon Smiley murf : adopté !

Merci pour ton aide.
Je savais bien que je n'étais pas encore débarrassé de mon htaccess Smiley decu

Si l'adresse d'entrée sur mon site est http://www.blackholesun.fr/ alors c'est la page index.php qui s'affiche (normal) , mais l'url n'est pas http://www.blackholesun.fr/index.php dans la barre d'adresse.

Or j'ai ce petit code qui permet de passer automatiquement à la version US à partir de l'url en cours :
<?php echo $pageUS = substr_replace($_SERVER['REQUEST_URI'],'',strlen($_SERVER['REQUEST_URI'])-4).'_US.php'; ?>


Ca fonctionne partout, sauf dans le cas où l'entrée se fait directement par http://www.blackholesun.fr/ : dans ce seul cas, le résultat de mon code ci-dessus sera http://www.blackholesun.fr/_US.php au lieu de http://www.blackholesun.fr/index_US.php

Gênant donc...

Je pense qu'il faut que je reprenne ce code de gc-nomade :
RewriteCond %{REQUEST_URI} !^/classic 
RewriteRule ^([^/\.]+).html?$ $1.html?%{QUERY_STRING} [L]


Mais en l'adaptant pour ce cas. C'est de la navigation à vue, mais au flair de la logique, ça semblerait tenir debout. Sauf que je ne suis pas du tout certain que ça n'affecte que l'arrivée sur la racine.

RewriteCond %{REQUEST_URI} !^/ 
RewriteRule ^/$ index.php [L]


Est-ce correct ?
Re bonjour,

Je vais passer ce topic en résolu car j'ai finalement réussi à mettre mon site en ligne et tout fonctionne parfaitement.

Mon htacess :
RedirectMatch (.*)\.html$  http://www.blackholesun.fr$1.php  [L,R=301]


Pour passer automatiquement de page.php à page_US.php, j'utilise donc ce code :
<?php echo $pageUS = substr_replace($_SERVER['REQUEST_URI'],'',strlen($_SERVER['REQUEST_URI'])-4).'_US.php'; ?>


Seule la racine du site me posait encore problème puisque ce code ajoute _US à l'url en cours, or si la racine de mon site affiche automatiquement le contenu de index.php, l'URL pour sa part n'indique pas "index.php". Donc le code pour le passage à index_US.php pour cette seule page est repassé en statique.

Pour la partie /classic, je me suis résolu à passer toutes les pages en extension php parce que je n'ai pas réussi à annuler la règle précédente pour ce dossier. Mais également parce que j'ai souhaité davantage de simplicité en éliminant les exceptions et autres particularismes qui n'avaient finalement pas de raison objective d'être.

Pour intégrer des vidéos Youtube et garder une validation W3C, j'ai utilisé ce code :
<object type="application/x-shockwave-flash" data="http://www.youtube.com/v/NOM-VIDEO&amp;hl=fr&amp;fs=1&amp;rel=0&amp;color1=0x3a3a3a&amp;color2=0x999999&amp;border=1" width="660" height="525">
<param name="movie" value="http://www.youtube.com/v/NOM-VIDEO&amp;hl=fr&amp;fs=1&amp;rel=0&amp;color1=0x3a3a3a&amp;color2=0x999999&amp;border=1" />
<param name="allowFullScreen" value="true" />
<param name="allowscriptaccess" value="always" />
<param name="wmode" value="transparent" />
</object>


Ce code permet en outre d'intégrer un cadre coloré, et le &amp doit remplacer tous les "&" des URL pour rester conforme au W3C.

Comme dit, mon site est à présent en ligne et totalement en php. Tout du moins pour les noms de pages car le code reste majoritairement statique mais c'est la nature même du contenu. Ceci va toutefois me permettre d'introduire progressivement des éléments plus dynamiques dans mes pages et notamment d'exploiter une base de données. Il est donc probable que je revienne sévir ici avec mes questions, mais cette fois dans une autre section Smiley lol

Merci à tous ceux et celle qui sont intervenus pour m'aider Smiley jap
Pages :