Ca parait simple pourtant...mais ca ne marche pas

Nouveau WRInaute
Avé toutes et tous

Je débute en réécriture d'url pour mon site.
J'ai écumé le web en long, en large, et en travers. J'ai lu et relu des tutos, j'ai regardé des vidéos, il me semble que tout est correct et pourtant plouf... :roll:

Hébergeur : HostPapa
J'ai un fais un dossier testhtaccess, d'après un tuto pour vérifier que la fonction était bien présente chez mon hébergeur. C'est un tuto de redirection et non de réécriture mais ca fonctionne quand même.

mes pages + le fichier .htaccess se trouvent dans : racine>sousdossiertest

format actuel : racine/sousdossiertest/index.php?page=accueil

et je souhaite qu'elles soient renommées en : racine/sousdossiertest/index.html


mon fichier .htaccess :

Code:
Options +FollowSymlinks
RewriteEngine on

RewriteRule ^index.php?page=accueil$ accueil.html [L]

idem pour les autres pages : contact, etc...

Je n'ai aucun message d'erreur, simplement rien n'est réécrit comme si le fichier .htaccess n'existait pas.
Parmi les tests les plus courants effectués et tous sans aucun effet :
- avec et sans l'extension .txt
- avec et sans les ^ et $ (comme vu dans les tutos vidéo)
- avec et sans la ligne :
Code:
RewriteBase /sousdossiertest

bref, je deviens chèvre... et un coup de main serait vraiment sympas
Merci d'avance à toutes et à tous :(

Panoramix
 
WRInaute impliqué
Bonjour,

Je pense que tu as as ecris ta règle à l'envers :

Code:
RewriteRule ^index.php?page=accueil$ accueil.html [L]

mais plutot

Code:
RewriteRule ^accueil.html$ /index.php?page=accueil [L]

Essayes pour voir...
 
Nouveau WRInaute
Merci à tous les deux pour vos réponses.

@ Poska
le fichier .htaccess est dans un sousdossier car pour le moment le site encore en phase de test se trouve dans un sousdossier.
Néanmoins, je viens pour faire le test de mettre le fichier .htaccess également à la racine du dossier htmlpublic mais cela ne change rien...

@bgdc
Je viens de tester ta méthode, cela ne change rien non plus... c'est à devenir fou...
Je me suis aussi posé déjà la question à ce sujet car j'ai vu les deux écritures sur différents tutos.
En moyenne, 3 fois sur 4 j'ai vu écrit : ^ adresse réelle à changer $ nouvelle adresse réécrite.html
et 1 fois sur 4 : ^ nouvelleadresseréécrite $ adresse réelle à changer.html

D'autres idées ?... J'aimerais vraiment comprendre
Merci à vous
 
WRInaute passionné
Salut,

Note : je suis une "burne" en ré écriture mais sait on jamais ^^...
Le .htaccess directement dans "sousdossiertest".
Code:
RewriteEngine on
RewriteBase /
RewriteRule  ^accueil\.html$ index.php?page=accueil  [L]
 
Nouveau WRInaute
@tryan
Merci de la piste, mais ça ne marche toujours pas...
Je vais pas tarder à ouvrir le gaz je crois, ça fait plus d'une semaine que je galère dessus :oops:
 
WRInaute passionné
Chiote ^^

Et avec un :
Code:
RewriteBase /sousdossiertest
??
Sinon :
Code:
RewriteRule accueil\.html$ /sousdossiertest/index.php?page=accueil  [L]
 
WRInaute passionné
Déjà il faut bien inverser ta règle. Essaie

Code:
Options +FollowSymlinks
RewriteEngine on

RewriteRule ^accueil\.html$ index.php?page=accueil [L]

sinon essaie (ça dépend des hébergeurs)

Code:
Options +FollowSymlinks
RewriteEngine on

RewriteRule ^accueil\.html$ /index.php?page=accueil [L]

la page à appeler pour faire le test est bien entendu accueil.html



Si ça ne marche pas, essaie de mettre le .htaccess à la racine, et colle y ce contenu

Code:
Options +FollowSymlinks
RewriteEngine on

RewriteRule ^chemin/accueil\.html$ chemin/index.php?page=accueil [L]

URL à appeler : chemin/accueil.html


Et si ça ne marchait pas, colle l'URL ici https://www.webrankinfo.com/outils/header.php et donne le résultat.
 
Nouveau WRInaute
@jeroen

Alors j'ai testé tes codes, sans succès...

J'ai fait le collage d'URL demandé et voici le résultat :

Pas de redirection (code 200) (et pourtant d'après ce que j'ai vu le code 200 veut dire : "requête effectuée avec succès" ??

Code:
HTTP/1.1 200 OK
Date: Tue, 01 Nov 2011 22:51:41 GMT
Server: Apache
X-Powered-By: PHP/5.3.8
Content-Type: text/html

c'est grave docteur ?...
 
WRInaute passionné
Si la redirection se fait normalement, c'est normal.
Rassure moi,
- le fichier dossier/index.html N'EXISTE PAS ?
- L'URL que tu appelle est bien dossier/index.html ?
- si tu appelle le fichier dossier/index.php?page=accueil le résultat n'est pas une page blanche ?
- Tu ne t'attends pas à ce que l'URL change dans la barre du navigateur ?


Essaie de mettre ça

Options +FollowSymlinks
RewriteEngine on

RewriteRule ^accueil\.html$ index.php?page=accueil [L,R=301]

et refais le test https://www.webrankinfo.com/outils/header.php
 
Nouveau WRInaute
@jeroen

Alors, je te réponds dans l'ordre :

- le fichier dossier/index.html N'EXISTE PAS ?
Non, ce fichier index.html n'existe pas physiquement dans le dossier.
Tous mes fichiers sont en .php (accueil, contact, etc...) et se trouvent dans :
htmlpublic(racine du site) > sousdossierdetravail
Bien évidemment, à terme quand tout sera OK, l'intégralité du site sera transférée à la racine, et ce "sousdossiedetravail" sera supprimé.

- L'URL que tu appelle est bien dossier/index.html ?
Je ne suis pas sûr de bien comprendre ta question, donc pardonnes moi si je ne te réponds pas comme je le devrais.
Encore une fois TOUTES les pages du site sont des fichiers php réels dans le sousdossierdetravail.
Concernant le chemin pour les appeler depuis le fichier .htaccess, cela dépend des tests effectués :
soit :
Code:
RewriteRule accueil\.html$ /sousdossiertest/index.php?page=accueil  [L]
ou
Code:
RewriteRule accueil\.html$  index.php?page=accueil  [L]

- si tu appelle le fichier dossier/index.php?page=accueil le résultat n'est pas une page blanche ?
Je te le confirme, le résultat n'est pas une page blanche, elle s'affiche tout à fait normalement.

- Tu ne t'attends pas à ce que l'URL change dans la barre du navigateur ?
Heu... oui ? le but de la réécriture d'URL est bien que la nouvelle adresse en .html s'affiche dans la barre d'adresse non ?


J'ai refait le test que tu m'as demandé avec ton nouveau code est le résultat est le même :
Pas de redirection (code 200)

HTTP/1.1 200 OK
Date: Wed, 02 Nov 2011 13:10:22 GMT
Server: Apache
X-Powered-By: PHP/5.3.8
Content-Type: text/html


@Poska
Non du tout, c'est HostPapa
 
WRInaute passionné
Bon, je crois qu'il y a une grosse incompréhension de ta part.

je part de ton exemple, ou tu veux réécrire une adresse .php en .html

L'URLREWRITING ne va pas modifier ton adresse .php en .html, elle va simplement servir une url en .php lorsqu'une url en .html est demandée au serveur, et ceci de façon transparente pour l'utilisateur.

Si tu tape tonadresse.php dans la barre de ton navigateur, ta page sera servie de façon classique, sans faire appel à l'URL rewriting.
Si tu tape tonadresse.html dans la barre de ton navigateur, le serveur va servir en fait la page .php (réécriture d'URL), mais de façon transparente pour l'utilisateur, et l'URL dans la barre du navigateur ne changera PAS, elle restera .html.

L'URL rewiting implique que tu doive changer toutes les URL de ton site, pour que les liens pointent vers des .html.


Je résume
Avant l'URL rewriting :
- tes liens pointent vers mapage.php
- quand tu clique sur ces liens, les pages sont servies de façon classique, et mapage.php apparait dans la barre du navigateur

Après l'URL rewriting :
- tes liens sont du type mapage.HTML (parce que tu as repris tes pages une par une et modifié le code source)
- quand tu clique sur un lien, la page servie est la page mapage.php (via la règle de réécriture), mais c'est transparent pour l'utilisateur : l'URL dans la barre d'adresse du navigateur reste mapage.html


Capito ?
 
Nouveau WRInaute
Ah oui en effet c'est bien possible... :roll:

Tu me corriges si je me trompes alors il faudrait que je modifie le code php de ma page index (qui gère la navigation) :

Actuellement :
Code:
<!-- <div id="contenu">  -->        
              <?php
                        if (isset($page)) {
                                include $page.'.php';
                                }
                                
                        else {
                            include 'accueil.php';
                        }
                            
                        ?>
              
   <!-- </div>-->

Il faudrait que je le transforme en :

Code:
<!-- <div id="contenu">  -->        
              <?php
                        if (isset($page)) {
                                include $page.'.html';
                                }
                                
                        else {
                            include 'accueil.html';
                        }
                            
                        ?>
              
   <!-- </div>-->

J'ai bon ?...

Mais à la base, que le navigateur affiche accueil.php ou accueil.html est secondaire pour moi.
Ce que je voudrais c'est que la variable n'apparaisse pas, que index.php?page=accueil devienne "simplement" : accueil.html, ou accueil.php peut m'importe.

C'est possible ?

Merci en tout cas pour tes explications et ta patience... Ca devient si rare...
 
WRInaute passionné
Non, il ne faut pas que tu transforme la code à cet endroit.
Il faut que tu ouvres toutes les pages et que tu modifie les liens (<a href="...")

Et si tu as compris, index.php?page=accueil ce n'est pas l'URL REXRITING qui va le modifier, c'est toi MANUELLEMENT dans tes pages.
 
Nouveau WRInaute
J'ai peur de comprendre alors... lol

Actuellement, toute la navigation du site se fait en php avec un code qui est uniquement dans le fichier index.
Ensuite, selon l'onglet de navigation que l'on sélectionne, une variable page est créée et en fonction de celle ci on affiche dans la div "contenu" la page php correspondante.
Jusque là je pense que tu t'en étais douté !

Je n'ai pas de balises <a href="page..."> dans mon code.
Si je dois les utiliser, en fait cela va impliquer que :
- index.php devienne la page d'accueil et que le contenu de la page d'accueil soit en "dur" dans ce fichier index.php, et que de ce fait la page "séparée" accueil.php n'est plus lieu d'exister.
- je vais devoir intégrer le menu de navigation dans toutes les pages en dur aussi pour que toutes les pages pointent vers toutes les pages ?

En résumé : si on a une navigation en php avec une variable page, impossible d'avoir des url propres et courtes, il faut que toutes les pages contiennent la navigation qui pointe vers toutes les autres pages du site.

C'est ça dans mon cas ?
 
Discussions similaires
Haut