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 09/10/2011, 12h07   #1
Membre régulier
 
Inscription : décembre 2006
Messages : 493
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 493
Points : 90
Points : 90
Par défaut Réécriture d'url sur plusieurs paramètres

Bonjour,

J'ai des pages qui sont paramétrées en temps normal de cette façon là (index.php?page=xx). Via l'Url Rewriting j'ai pu les appeler comme ceci :

Code :
1
2
3
4
5
6
7
8
9
10
11
$pages=array(
	'home'=>'home.php',
	'sports'=>'sports.php'
);
if(isset($_GET['page']) && !array_key_exists($_GET['page'],$pages)) {
	include 'error.php';
} else if(isset($_GET['page']) && array_key_exists($_GET['page'],$pages)) {
	include $pages[$_GET['page']];
} else {
	include 'home.php';
}
Code :
<a href="sports">Sports</a>
Le .htaccess que j'utilise étant comme ça :
Code :
1
2
3
Options +FollowSymlinks -Indexes -MultiViews
RewriteEngine On
RewriteRule ^([a-z]+)$ index.php?page=$1 [L,QSA]
Je n'arrive pas à faire en sorte que je puisse appeler une page ayant un deuxième paramètre, du genre index.php?page=xx&id=nn.
J'ai bien tenté de rajouter

Code :
RewriteRule ^([a-z]+)$ index.php?page=$1&id=$2 [L,QSA]
Mais sans succès !! Une idée ? Merci d'avance, bon dimanche.
nicolas2603 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/10/2011, 21h34   #2
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 293
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 293
Points : 8 579
Points : 8 579
Citation:
Envoyé par nicolas2603 Voir le message
J'ai bien tenté de rajouter

Code :
RewriteRule ^([a-z]+)$ index.php?page=$1&id=$2 [L,QSA]
Le $2 est censé correspondre à quoi dans l'URL ? Sa valeur sort d'où ?
__________________

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 10/10/2011, 00h29   #3
Membre régulier
 
Inscription : décembre 2006
Messages : 493
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 493
Points : 90
Points : 90
C'est sensé être une variable qui est un paramètre de requête SQL, mais qui normalement ne doit pas intervenir sur l'URL. Mais je ne sais pas comment construire mon URL pour que la page soit appelée, comme si je faisais ça en fait :
Code :
1
2
<a href="index.php?page=sport">Sports</a>
devient
Code :
<a href="sport">Sports</a>
mais
Code :
<a href="index.php?page=sport&id=5">Sports</a>
devient quoi ?
nicolas2603 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2011, 10h37   #4
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 293
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 293
Points : 8 579
Points : 8 579
C'est bien le problème : si on ne trouve pas l'information id=5 dans l'url (sous n'importe quelle forme), comment Apache en devine la valeur ? On peut la coder dans le .htaccess mais dans ce cas ce sera toujours la même valeur ou bien il faudra ajouter une règle pour chaque valeur.
__________________

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 11/10/2011, 17h55   #5
Membre régulier
 
Inscription : décembre 2006
Messages : 493
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 493
Points : 90
Points : 90
Oui j'ai bien compris ça, j'ai donc essayé de faire une url de ce genre :
Code :
<a href="sport-5">Sports</a>
avec un .htaccess comme précédemment :
Code :
RewriteRule ^([a-z]+)-([0-9])$ /index.php?page=$1&id=$2 [L,QSA]
Mais ça n'a pas fonctionné ! Il me manque un élément, je sais, mais impossible à comprendre quoi...
nicolas2603 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2011, 00h37   #6
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 293
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 293
Points : 8 579
Points : 8 579
Citation:
Envoyé par nicolas2603 Voir le message
Mais ça n'a pas fonctionné !
Quel a été le résultat obtenu, exactement ? Quelle URL exacte as-tu utilisée pour ce test ?
__________________

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 12/10/2011, 09h09   #7
Membre régulier
 
Inscription : décembre 2006
Messages : 493
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 493
Points : 90
Points : 90
J'ai utilisé cette URL :
Code :
<a href="sports-5">Sports</a>
Et j'ai été redirigé vers la page error.php, celle qui est appelée lorsqu'un paramètre de page est passé mais que le page n'existe pas.
nicolas2603 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2011, 21h01   #8
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 293
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 293
Points : 8 579
Points : 8 579
Je ne vois pas pourquoi ça ne marche pas : la règle est correcte. Je soupçonne un conflit avec une autre règle. Tu peux donner le .htaccess en entier, 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 12/10/2011, 23h41   #9
Membre régulier
 
Inscription : décembre 2006
Messages : 493
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 493
Points : 90
Points : 90
Alors voici mon .htaccess:
Code :
1
2
3
4
5
6
7
8
9
10
11
Options -Indexes

# URL rewriting
Options +FollowSymlinks
RewriteEngine On
# RewriteRule ^([a-z]+)$ index.php?page=$1 [L]
RewriteRule ^([a-z]+)-([0-9])$ index.php?page=$1&id=$2 [L]

# Page d'erreur personnalisée
ErrorDocument 403 http://localhost/monsite/adm/error
ErrorDocument 404 http://localhost/monsite/adm/error
Voici mon fichier css de liaison entre le fichier et le paramètre "page":
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$pages=array(
	'home'=>'home.php',
	'sports'=>'user_gallery.php',
	'error'=>'error.php'
);
if(isset($_GET['page']) && !array_key_exists($_GET['page'],$pages)) {
	include 'error.php';
} else if(isset($_GET['page']) && array_key_exists($_GET['page'],$pages)) {
	include $pages[$_GET['page']];
} else {
	include 'home.php';
} ?>
Et voici le lien tenté :
Code :
<a href="sports-56">lien</a>
Sauf que, du coup je suis redirigé vers la page error quel que soit le lien. Et je viens de me rendre compte d'un truc, c'est que là je suis dans un dossier d'administration, et dans le site même j'ai aussi un .htaccess. Ca peut se télescoper ?
nicolas2603 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2011, 21h06   #10
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 293
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 293
Points : 8 579
Points : 8 579
S'il n'y a pas d'erreur de copier-coller, l'erreur vient que le lien que tu testes est sports-56 ("56" : 2 chiffres) alors que l'expression régulière du filtre est ^([a-z]+)-([0-9])$ qui suppose que l'URL se termine par - suivi d'un seul chiffre. Il manque juste un + :
Code :
RewriteRule ^([a-z]+)-([0-9]+)$ index.php?page=$1&id=$2 [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 14/10/2011, 19h01   #11
Membre régulier
 
Inscription : décembre 2006
Messages : 493
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 493
Points : 90
Points : 90
Il n'y avait pas d'erreur de copié-collé, j'ai donc rajouté le +.
Et je me suis rendu compte que certaines url contenaient des chiffres ET des lettres !! Héhé, le boulet !! Du coup j'ai modifié comme ceci :
Code :
RewriteRule ^([a-z]+)-([a-z0-9]+)$ index.php?page=$1&id=$2 [L]
Et là, ça fonctionne !! Merci pour ton aide, je commence à comprendre le fonctionnement !
nicolas2603 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 19h46.


 
 
 
 
Partenaires

Hébergement Web