Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Serveurs (Apache, IIS,...) > Apache
Apache Forum d'entraide Apache. Avant de poster : Cours Apache, FAQ Apache
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/01/2011, 16h45   #1
Invité de passage
 
Inscription : avril 2010
Messages : 29
Détails du profil
Informations personnelles :
Âge : 38
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : avril 2010
Messages : 29
Points : 2
Points : 2
Par défaut Charger toto.html à la place de toto.php

Bonjour.

Sur mon site, j'ai opté pour la réécriture suivante dans .htaccess :

Code :
1
2
RewriteRule   ^([a-z]+).html$   /index.php?url=$1  [L]
Mais je me suis rendu compte que sur certains moteurs de recherche, les pages avec l'extension PHP étaient données. Par exemple, le lien suivant figure dans la liste des suggestions d'un moteur de recherche :

Le problème est que la page toto.php est faite pour être incluse DANS la page index.php donc quand on clique sur le lien du moteur de recherche, on arrive à une page qui n'est pas mise en forme ...

Je voulais donc savoir s'il existait une écriture demandant à .htaccess de charger automatiquement toto.html à la place de toto.php (et ce, pour tous les fichiers PHP).

Je précise que dans index.php, j'inclus les pages PHP par la commande :

J'ajoute que j'ai tenté la commande suivante, mais ans succès :

Code :
RedirectMatch seeother /^([a-z]+).php$ http://www.monsite.fr/$1.html
Merci d'avance.
masiuxus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2011, 17h39   #2
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 277
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 277
Points : 8 563
Points : 8 563
Non, c'est un peu plus compliqué que ça. Il faut distinguer l'accès à des pages PHP venant directement de l'extérieur des accès issus d'une réécriture :
Code :
1
2
3
4
RewriteRule   ^([a-z]+).html$   /index.php?url=$1&redirect_internal  [L]

RewriteCond %{QUERY_STRING} !redirect_internal
RewriteRule (*.)\.php$ $1.html [R=301,L]
Sur le même principe, si tu as d'autres réécriture dans ton .htaccess vers des pages PHP, il faut ajouter le paramètre d'URL redirect_internal dans tes réécritures.
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2011, 17h57   #3
Invité de passage
 
Inscription : avril 2010
Messages : 29
Détails du profil
Informations personnelles :
Âge : 38
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : avril 2010
Messages : 29
Points : 2
Points : 2
Merci pour ces précisions.
J'ai tenté cette technique, mais là ... Le site ne fonctionne plus.
Quand je tape :

Cela me met une erreur de type 500.
masiuxus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2011, 12h38   #4
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 277
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 277
Points : 8 563
Points : 8 563
Ca arrive mais faut nous aider à t'aider : donne-nous tout le contenu de ton .htaccess.
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2011, 13h35   #5
Invité de passage
 
Inscription : avril 2010
Messages : 29
Détails du profil
Informations personnelles :
Âge : 38
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : avril 2010
Messages : 29
Points : 2
Points : 2
Bonjour.

J'ai tenté de mettre uniquement le script donné, et cela ne fonctionne quand-même pas.

Cependant, le contenu entier est le suivant :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
RedirectPermanent  /docdivers/ http://www.monsite.fr/
RedirectPermanent  /docpedago/ http://www.monsite.fr/
RedirectPermanent  /docsco/ http://www.monsite.fr/
RedirectPermanent  /docjuridisme/ http://www.monsite.fr/
RedirectPermanent  /enseignement/ http://www.monsite.fr/

Options +FollowSymlinks
RewriteEngine on
RewriteRule   ^([a-z]+).html$   /index.php?url=$1&redirect_internal  [L]
RewriteRule   ^autourde-([a-z]+).html$   /index.php?url=autourde&page=$1&redirect_internal   [L]
RewriteRule   cours-particuliers-mathematiques-bordeaux.html   /index.php?url=cp&redirect_internal   [L]
RewriteRule   ^error([0-9]+).html$   /index.php?url=$1&redirect_internal   [L]

ErrorDocument 404 http://www.monsite.fr/error404.html
masiuxus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2011, 21h40   #6
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 277
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 277
Points : 8 563
Points : 8 563
J'avoue ne pas comprendre quel est le problème. Tu as accès aux traces d'erreur d'Apache (fichier error_log) ?
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2011, 22h25   #7
Invité de passage
 
Inscription : avril 2010
Messages : 29
Détails du profil
Informations personnelles :
Âge : 38
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : avril 2010
Messages : 29
Points : 2
Points : 2
Au temps pour moi ... J'ai donné le contenu qui fonctionne !

Mais si j'ajoute à cela les lignes que tu m'as fourni, là, ça fait une erreur 500.

En gros,

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
RedirectPermanent  /docdivers/ http://www.monsite.fr/
RedirectPermanent  /docpedago/ http://www.monsite.fr/
RedirectPermanent  /docsco/ http://www.monsite.fr/
RedirectPermanent  /docjuridisme/ http://www.monsite.fr/
RedirectPermanent  /enseignement/ http://www.monsite.fr/

Options +FollowSymlinks
RewriteEngine on
RewriteRule   ^([a-z]+).html$   /index.php?url=$1&redirect_internal  [L]
RewriteRule   ^autourde-([a-z]+).html$   /index.php?url=autourde&page=$1&redirect_internal   [L]
RewriteRule   cours-particuliers-mathematiques-bordeaux.html   /index.php?url=cp&redirect_internal   [L]
RewriteRule   ^error([0-9]+).html$   /index.php?url=$1&redirect_internal   [L]

RewriteCond %{QUERY_STRING} !redirect_internal
RewriteRule (*.)\.php$ $1.html [R=301,L]

ErrorDocument 404 http://www.monsite.fr/error404.html
ne fonctionne pas.
Et je n'ai pas accès au fichier APACHE non ... Je suis chez OVH, et je ne le trouve pas sur le serveur.
masiuxus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2011, 00h43   #8
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 277
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 277
Points : 8 563
Points : 8 563
Me suis trompé c'est .* et pas *. dans la RewriteRule :
Code :
RewriteRule (.*)\.php$ $1.html [R=301,L]
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2011, 12h47   #9
Invité de passage
 
Inscription : avril 2010
Messages : 29
Détails du profil
Informations personnelles :
Âge : 38
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : avril 2010
Messages : 29
Points : 2
Points : 2
Il y a du mieux en effet (comme je ne connais pas bien la syntaxe des expressions régulières, je n'avais rien vu).

Par contre, maintenant, quand je tape "toto.php", ça me redirige vers la page d'erreurs ... J'ai donc enlevé les options et tout fonctionne.

Merci !

PS : j'avais entre temps pris un autre chemin ... J'avais ouvert une session PHP dès l'entrée dans mon site et dans chaque page PHP appelée via index.php, j'avais mis une condition sur l'existence d'une variable de session, ce qui est, je l'accord, contraignant car j'ai dû mettre cette condition sur toutes les pages ... Mais maintenant, je suis sauvé
masiuxus est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h00.


 
 
 
 
Partenaires

Hébergement Web