Précédent   Forum du club des développeurs et IT Pro > 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
 
Outils de la discussion
Publicité
'
Vieux 14/12/2012, 18h11   #1
didou91
Invité de passage
 
Homme
Inscription : décembre 2012
Messages : 27
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2012
Messages : 27
Points : 1
Points : 1
Par défaut url rewriting

Je suis en train de faire de l'url rewriting et j'ai quelques questions ,toutes mes pages seront en http://nomdedomaine/mapage ou http://nomdedomaine/mapage/
tout d'abord est-ce aussi bien pour le référencement que http://nomdedomaine/mapage.html ?

Pour rediriger mon ancienne url (http://nomdedomaine/mapage.php) vers la nouvelle , il faut faire un redirection 301 ou la faire en php ? (pour la redirection 301 on fait comment ?)

Dois-je modifier tout les liens écrit dans mes scripts vers mes nouvelles url ?

Comment reconnaître les différentes erreurs (401,403,404,500) si elle sont redirigés toutes vers un même fichier ?

Et je ne comprend pas pourquoi avec cette instruction (dans le fichier .htacces) (en mettant un paramètre GET inexistant):
1
Code :
RewriteRule ^mapage/([1-9]*)$ /mapage.php?page=$1
sa me renvoie vers une page :
Citation:
Not Found

The requested URL /mapage/mapage.php was not found on this server.
Alors que dans mon script php il y a tout pour faire face a ce genre de situation.

Merci
didou91 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2012, 21h53   #2
_Mac_
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 9 119
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 9 119
Points : 10 641
Points : 10 641
Citation:
Envoyé par didou91 Voir le message
Je suis en train de faire de l'url rewriting et j'ai quelques questions ,toutes mes pages seront en http://nomdedomaine/mapage ou http://nomdedomaine/mapage/
tout d'abord est-ce aussi bien pour le référencement que http://nomdedomaine/mapage.html ?
Aucune idée. Il faut poser la question sur le forum référencement.

Citation:
Envoyé par didou91 Voir le message
Pour rediriger mon ancienne url (http://nomdedomaine/mapage.php) vers la nouvelle , il faut faire un redirection 301 ou la faire en php ? (pour la redirection 301 on fait comment ?)
Alors, on va resituer les choses. PHP est un langage de programmation, souvent utiliser pour faire des sites Web mais pas que, et un redirection (301 = redirection permanente ; 302 = temporaire) est un message HTTP particulier qui dit que la ressource (l'URL) demandée se trouve ailleurs (301 = définitivement ; 302 = temporairement).

Etant donné que tu peux programmer des sites Web en PHP, c'est évident que tu peux faire de redirection 301 en PHP mais en fait ça n'a rien à voir : rien ne t'oblige à utiliser PHP pour faire des redirections (301 ou 302). Tout dépend de la technologie utilisée sur le serveur Web. Si le serveur Web est Apache, tu peux faire des redirections 301 directement par configuration Apache. En fonction de ce qu'il s'agit de rediriger, c'est souvent ce qu'on cherche à faire pour des raisons de simplicité, mais quand c'est trop difficile par configuration Apache, on passe par une méthode plus évoluée : un script PHP mais pourquoi pas un CGI, une page en ASP (c'est possible), en HTML + JavaScript, etc.

Donc tout dépend de ce que tu veux faire comme redirection : quand ? vers quoi ? et avec quoi ?

Citation:
Envoyé par didou91 Voir le message
Dois-je modifier tout les liens écrit dans mes scripts vers mes nouvelles url ?
C'est très fortement recommandé car un navigateur qui accède au site pour la première fera tout d'abord une requête sur l'ancienne URL pour être redirigé ensuite. Si on peut éviter cette redirection, c'est préférable.

Citation:
Envoyé par didou91 Voir le message
Comment reconnaître les différentes erreurs (401,403,404,500) si elle sont redirigés toutes vers un même fichier ?
Tout dépend de ce fichier. Par configuration Apache (si tant est que c'est une configuration Apache qui redirige aujourd'hui ces erreurs vers ce même fichier), c'est possible de diriger chaque type d'erreur sur un fichier différent.

Citation:
Envoyé par didou91 Voir le message
Et je ne comprend pas pourquoi avec cette instruction (dans le fichier .htacces) (en mettant un paramètre GET inexistant):
1
Code :
RewriteRule ^mapage/([1-9]*)$ /mapage.php?page=$1
sa me renvoie vers une page :

Alors que dans mon script php il y a tout pour faire face a ce genre de situation.
Deux choses a priori :
  1. L'URL gérée par cette règle est de la forme /mapage/des_chiffres. Vu le message d'erreur, j'ai l'impression que ce n'est pas ce que genre d'URL que tu demandes, mais je peux me tromper.
  2. La réécriture vers /mapage.php?... ne correspond pas au script mapage/mapage.php mais un script appelé "mapage.php" situé à la racine du site. Il y a encore une subtilité d'Apache qui m'échappe mais des fois, une réécriture ne marche pas à cause du / devant le second membre d'une RewriteRule : peut-être qu'en réécrivant vers mapage.php?... sans / devant corrigerait les choses.
__________________

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/12/2012, 02h09   #3
didou91
Invité de passage
 
Homme
Inscription : décembre 2012
Messages : 27
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2012
Messages : 27
Points : 1
Points : 1
la redirection 301 c'est pour rediriger mes anciens liens du genre page.php?page=2 vers page/2 donc comment faire une redirection 301 dans le fichier htaccess ?

Donc pour chaque erreur différente je devrais rediriger vers un fichier différent ? Je ne peut pas savoir en php l'erreur pour afficher un message différent ?

Pour la dernière question je viens de trouver (juste une histoire de redirection avec header)
didou91 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2012, 21h07   #4
_Mac_
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 9 119
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 9 119
Points : 10 641
Points : 10 641
Citation:
Envoyé par didou91 Voir le message
la redirection 301 c'est pour rediriger mes anciens liens du genre page.php?page=2 vers page/2 donc comment faire une redirection 301 dans le fichier htaccess ?
En te renseignant un petit peu, tu tomberas sur le fait qu'il faut que tu utilises mod_rewrite avec une RewriteCond pour récupérer la valeur du paramètre "page" et une RewriteRule qui fait la redirection :
Code :
1
2
RewriteCond %{QUERY_STRING} page=([0-9]+)
RewriteRule page\.php page/%1 [R=301]

Citation:
Envoyé par didou91 Voir le message
Donc pour chaque erreur différente je devrais rediriger vers un fichier différent ? Je ne peut pas savoir en php l'erreur pour afficher un message différent ?
Ca doit être possible mais tout dépend de la manière dont ta page PHP est appelée en cas d'erreur. Est-ce de la configuration Apache et si oui quelle est-elle ?
__________________

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/12/2012, 23h24   #5
didou91
Invité de passage
 
Homme
Inscription : décembre 2012
Messages : 27
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2012
Messages : 27
Points : 1
Points : 1
Pour ma version apache je suis a la 2.2.21 (sous wamp)

Code :
1
2
3
ErrorDocument 404 /erreur_404.php
RewriteRule ^([^inscription][a-zA-Z0-9]{7,12})$ /mapage.php?parametre=$1
et la j'ai un petit problème avec ixadqPs2 pourtant la chaîne fait bien entre 7 et 12 caractères ( sa me renvoie sur ma page d'erreur) je ne comprend pas dutout
didou91 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2012, 21h26   #6
_Mac_
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 9 119
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 9 119
Points : 10 641
Points : 10 641
Du coup, pour les pages d'erreur, c'est plutôt simple :
Code :
1
2
3
ErrorDocument 404 /erreur.php?code=404
ErrorDocument 500 /erreur.php?code=500
...
et dans le code de erreur.php, tu récupères tout simplement 404, 500, etc. dans le paramètre d'URL code ($_GET["code"]).


Pour l'erreur 404 avec ixadqPs2, voir mon message du 14/12/2012, 21h53, tout en bas.
__________________

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 16/12/2012, 21h46   #7
didou91
Invité de passage
 
Homme
Inscription : décembre 2012
Messages : 27
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2012
Messages : 27
Points : 1
Points : 1
Citation:
Envoyé par _Mac_ Voir le message
Du coup, pour les pages d'erreur, c'est plutôt simple :
Code :
1
2
3
ErrorDocument 404 /erreur.php?code=404
ErrorDocument 500 /erreur.php?code=500
...
et dans le code de erreur.php, tu récupères tout simplement 404, 500, etc. dans le paramètre d'URL code ($_GET["code"]).


Pour l'erreur 404 avec ixadqPs2, voir mon message du 14/12/2012, 21h53, tout en bas.
En faites je souhaite pouvoir envoyer une personne sur une page différente en fonction d'un paramétre qui est compris entre 8 et 12 caractère sinon si le parametre rentré est moins de 8 on l'envoie vers une erreur 404 , si il fait plus de 12 on l'envoie aussi vers une erreur 404 , j'ai écrit dans mon htaccess comme cela :
Code :
RewriteRule ^([^inscription][A-Za-z0-9]{8,12})$ /mapage.php?parametre=$1
sauf qu'en rentrant un paramètre (ixadqPs2) (localhost/ixadqPs2) je tombe sur mon fichier erreur 404 mais avec d'autres de 8 caractère je tombe bien comme si j'avais rentré mapage.php?parametre=(machaine)
(je sais pas si c'est plus clair)
didou91 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2012, 21h29   #8
_Mac_
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 9 119
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 9 119
Points : 10 641
Points : 10 641
Tu peux donner une URL qui passe alors qu'elle ne devrait pas ?

Tu as vidé le cache de ton navigateur avant de faire tes tests ?
__________________

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 17/12/2012, 23h59   #9
didou91
Invité de passage
 
Homme
Inscription : décembre 2012
Messages : 27
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2012
Messages : 27
Points : 1
Points : 1
J'ai fait plein de test et justement j'ai que des urls qui ne passe pas alors qu'elle le devrait (http://localhost/iiiiiiii (ne marche pas) et deux trois truc comme ça)
http://localhost/aaaaaaaa ne marche pas avec :
Code :
RewriteRule ^([^inscription][A-Za-z0-9]{8,12})$ /mapage.php?parametre=$1
mais que avec :
Code :
RewriteRule ^([^inscription][A-Za-z0-9]{7,12})$ /mapage.php?parametre=$1
alors que sa fait bien 8 caractère je comprend pas

Et oui j'ai vidé mon cache avant de faire les tests.
didou91 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2012, 21h24   #10
_Mac_
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 9 119
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 9 119
Points : 10 641
Points : 10 641
En effet, c'est très étrange. Tu peux donner des URL qui passent ? Je me demande si ce n'est pas le multiplicateur {7,12} qui pose problème mais je ne vois pas pourquoi.

Et sans le / devant mapage.php ?
Code :
RewriteRule ^([^inscription][A-Za-z0-9]{7,12})$ mapage.php?parametre=$1
__________________

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 19/12/2012, 23h08   #11
didou91
Invité de passage
 
Homme
Inscription : décembre 2012
Messages : 27
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2012
Messages : 27
Points : 1
Points : 1
Salut ,
j'ai essayer sans le slash mais sa ne marche toujours pas.
Des urls qui passent ;
-http://localhost/4Ag12R3D (8 caractères)
-http://localhost/bbbbbbbb (8 caractères)
-http://localhost/aaaaaaaaa (9 caractères)
-http://localhost/aaaaaaaaaa (10 caractères)
-http://localhost/KXt52968 (8 caractères)
-http://localhost/KXt52968aaaa (12 caractères)
-http://localhost/4969709h (8 caractères)
-http://localhost/49697098 (8 caractères)
didou91 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2012, 23h21   #12
_Mac_
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 9 119
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 9 119
Points : 10 641
Points : 10 641
Ben ça marche comme il faut sur mon serveur perso. Du coup, je soupçonne un conflit avec d'autres règles de ton .htaccess. Est-ce que tu peux donner le .htaccess complet, s'il te plaît ?
__________________

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 20/12/2012, 23h50   #13
didou91
Invité de passage
 
Homme
Inscription : décembre 2012
Messages : 27
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2012
Messages : 27
Points : 1
Points : 1
Ouep;
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
RewriteEngine on
php_flag default_charset utf-8
AddDefaultCharset UTF-8
ErrorDocument 400 /erreur_400.php
ErrorDocument 401 /erreur_401.php
ErrorDocument 403 /erreur_403.php
ErrorDocument 404 /erreur_404.php
ErrorDocument 500 /erreur_500.php
ErrorDocument 503 /erreur_503.php
DirectoryIndex /accueil.php erreur_404.php
RewriteRule ^([^inscription][A-Za-z0-9]{7,12})$ /traitement.php?lien=$1
RewriteRule ^accueil/?$ /accueil.php
RewriteRule ^inscription/?$ /inscription.php
RewriteRule ^connexion/?$ /connexion.php
RewriteRule ^livreor$ /livreor.php
RewriteRule ^livreor/([0-9]*)$ /livreor.php?parametre=$1
RewriteRule ^contact/?$ /contact.php
RewriteRule ^infos/?$ /infos.php 
RewriteRule ^conditions_utilisation/?$ /cu.php 
RewriteRule ^oublie/([1-2])$ /id.php?parametre=$1
RewriteRule ^oublie$ /id.php [L]
didou91 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2012, 21h44   #14
didou91
Invité de passage
 
Homme
Inscription : décembre 2012
Messages : 27
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2012
Messages : 27
Points : 1
Points : 1
Désolé du double-post mais je viens de remarqué que quand j'enleve "[^inscription]" de mon htaccess ligne 11 tout mes liens de menu sont prie comme des liens du genre http://localhost/1K73nd36 mais quand je le remet tout mes lien du menu remarche mais les liens du genre http://localhost/1K73nd36 ne marche plus... bizard
Code :
RewriteRule ^([^inscription][A-Za-z0-9]{7,12})$ /traitement.php?lien=$1
didou91 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2012, 23h22   #15
_Mac_
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 9 119
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 9 119
Points : 10 641
Points : 10 641
Bizarre. Tu peux donner un exemple de lien dans ton menu ?
__________________

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 24/12/2012, 01h37   #16
didou91
Invité de passage
 
Homme
Inscription : décembre 2012
Messages : 27
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2012
Messages : 27
Points : 1
Points : 1
Salut ,
en faites j'ai marquer dans mon htacces "[^inscription]" pour empecher que ma page http://localhost/inscription soit pris comme un lien "http://localhost/KXt52968" sinon j'ai aussi comme lien dans mon menu : http://localhost/connexion
mais quand je met "[^inscription]" tout mes liens de menu marche mais pas mes lien comme ceux ci "http://localhost/KXt52968"
tu ne saurais pas comment que les fichiers php ne soit plus accesible directement par ex interdire l'accès a http://localhost/connexion.php mais autoriser seulement http://localhost/connexion (par exemple)
didou91 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/12/2012, 16h56   #17
_Mac_
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 9 119
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 9 119
Points : 10 641
Points : 10 641
Citation:
Envoyé par didou91 Voir le message
Salut ,
en faites j'ai marquer dans mon htacces "[^inscription]" pour empecher que ma page http://localhost/inscription soit pris comme un lien "http://localhost/KXt52968"
Cette notation [^inscription] n'est pas du tout la bonne notation pour ce que tu veux faire. C'est peut-être ça le problème. Essaie plutôt ceci :
Code :
1
2
RewriteCond %{REQUEST_URI} ^/inscription
RewriteRule ^([A-Za-z0-9]{9,13})$ /mapage.php?parametre=$1
__________________

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 27/12/2012, 20h15   #18
didou91
Invité de passage
 
Homme
Inscription : décembre 2012
Messages : 27
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2012
Messages : 27
Points : 1
Points : 1
Salut,
sa ne marche toujours pas...
En faites il fraudait dire que quand le parametre est egale a inscription ou connexion ou accueil on ne vas pas sur mapage.php...
didou91 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2012, 23h42   #19
_Mac_
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 9 119
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 9 119
Points : 10 641
Points : 10 641
"Ca ne marche pas" reste toujours aussi vague : quelle URL dans la barre du navigateur ? quel message d'erreur exact indiqué par le navigateur ? Bref, des précisions.

Citation:
Envoyé par didou91 Voir le message
En faites il fraudait dire que quand le parametre est egale a inscription ou connexion ou accueil on ne vas pas sur mapage.php...
C'est ce qu'est censé faire le RewriteCond, mais peut-être faut-il l'adapter un peu : si l'URL inscription est dans un "sous-répertoire" (http://site.com/toto/inscription) ma règle ne va pas car elle vérifie que l'URL commence strictement par "/inscription" et pas "/toto/inscription".


Tu as essayé aussi en supprimant le / devant mapage.php dans la RewriteRule ?
Code :
1
2
RewriteCond %{REQUEST_URI} ^/inscription
RewriteRule ^([A-Za-z0-9]{9,13})$ mapage.php?parametre=$1
__________________

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 31/12/2012, 18h43   #20
didou91
Invité de passage
 
Homme
Inscription : décembre 2012
Messages : 27
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2012
Messages : 27
Points : 1
Points : 1
Salut,
en faite sa marche bien , il fallait juste attendre une dixaine de minutes (je ne sais pas pourquoi mais a chaque modification sur mon htaccess les modification réel ne se font pas)

merci encore !
didou91 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


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


 
 
 
 
Partenaires

Hébergement Web