|
Voir le sujet précédent :: Voir le sujet suivant
|
| Auteur |
Message |
| |
|
bef1rst WRInaute occasionnel

Inscrit le: 14 Avr 2005 Messages: 101
|
Posté le : Mar Mai 24, 2005 17:04 Sujet du message: Je touche au but mais... |
|
|
Je suis en train de finaliser la mise en place de l'url rewritting sur un petit annuaire.
Les urls sont du type
wifi-suisse.html
wifi-suisse-vaud.html
wifi-suisse-vaud-Lausanne.html
et j'ai programmé mes liens pour avoir ceci au nivau inférieur (qui est le dernier) :
wifi-suisse-vaud-Lausanne-agip.html
Le codage des liens est ok, pas de soucis. Mais mes règles d'url rewritting ne fonctionnent pas jusqu'au but :
RewriteEngine on
(1) RewriteRule ^wifi/wifi-([a-z]+)\.html$ wifi/canton.php?pays=$1 [L]
(2) RewriteRule ^wifi/wifi-([a-z]+)-([a-z]+)\.html$ wifi/ville.php?pays=$1&canton=$2 [L]
(3) RewriteRule ^wifi/wifi-(.*)-(.*)-(.*)\.html$ wifi/hotspot.php?pays=$1&canton=$2&ville=$3 [L]
(4) RewriteRule ^wifi/wifi-([a-z]+)-([a-z]+)-([a-z]+)-([a-z]+)\.html$ wifi/detail-hotspot.php?pays=$1&canton=$2&ville=$3&hotspot=$4 [L]
En effet, tout va bien jusqu'a la ligne 3 mais aprés c'est la catastrophe. En essayant de débuger, je vois que les parametres "pays" et "canton" restent collés. Vous pouvez voir le résultat sur http:**www.bef1rst.com/wifi/wifi-suisse-vaud-Lausanne.html .
Il ne me manque que cette dernière étape pour appeler convenablement ma page detail-hotspot.php mais je ne peux pas.... Alors qu'elle marche très bien quand je l'appelle de manière dynamique, avec mes paramètres...
Pouvez vous m'aider ... ?
PS: une dernière petite chose, je n'utilise que du texte dans mes paramètres. Quelle est la différence entre ([a-z]+) et (.*) ? |
|
| |
|
 |
dasikund WRInaute occasionnel

Inscrit le: 28 Avr 2005 Messages: 134 Localisation: Paris
|
Posté le : Mar Mai 24, 2005 17:14 Sujet du message: Je touche au but mais... |
|
|
Salut,
Si je ne m'abuse, ([a-z]+) prend de 1 à "l'infini" caractère(s) alphabétique(s), et (.*) prend de 0 à "l'infini" n'importe quel(s) caractère(s).
En ce qui concerne ton problème, rien ne me choque dans l'écriture des règles. Si tu ne l'as pas fait, essaie de mettre les (.*) dans ta 4ème ligne, sinon essaie de mettre tes lignes dans l'autre sens, c'est-à-dire de la plus longue à la plus courte, paraît-il que c'est mieux.
A+
Doug |
|
| |
|
 |
bef1rst WRInaute occasionnel

Inscrit le: 14 Avr 2005 Messages: 101
|
Posté le : Mar Mai 24, 2005 17:25 Sujet du message: Je touche au but mais... |
|
|
Salut,
merci pour la précision pour la différence entre les deux synthaxes.
J'ai tout essayé dans l'ordre des lignes ainsi que les combinaisons entre les deux synthaxes sur toutes les lignes mais pas de changements, les 2 premiers paramètres restent collés (suisse-vaud) dans mon exemple... alors qu'ils sont bien différenciés dans l'url rewritting précédent... Louche.
Une autre idée ? Je suis preneur. |
|
| |
|
 |
dasikund WRInaute occasionnel

Inscrit le: 28 Avr 2005 Messages: 134 Localisation: Paris
|
Posté le : Mar Mai 24, 2005 17:31 Sujet du message: Je touche au but mais... |
|
|
Ok, je n'avais pas vu le lien que tu as donné. En fait ton URL rewriting fonctionne, c'est peut-être un problème dans le code qui génère l'arborescence, non ?
Si oui, balance le, on jettera un petit coup d'oeil.
Doug |
|
| |
|
 |
GAMING ZONE WRInaute passionné

Inscrit le: 13 Aoû 2004 Messages: 533 Localisation: plus là
|
Posté le : Mar Mai 24, 2005 17:41 Sujet du message: Je touche au but mais... |
|
|
(1) RewriteRule ^wifi/wifi-([a-z]+)\.html$ wifi/canton.php?pays=$1 [L]
(2) RewriteRule ^wifi/wifi-([a-z]+)-([a-z]+)\.html$ wifi/ville.php?pays=$1&canton=$2 [L]
(3) RewriteRule ^wifi/wifi-(.*)-(.*)-(.*)\.html$ wifi/hotspot.php?pays=$1&canton=$2&ville=$3 [L]
(4) RewriteRule ^wifi/wifi-([a-z]+)-([a-z]+)-([a-z]+)-([a-z]+)\.html$ wifi/detail-hotspot.php?pays=$1&canton=$2&ville=$3&hotspot=$4 [L]
je dirais que ta 3eme regle n'est pas bonne ...
(.*) signifie n'importe qu'elle caractere donc pet comprendre le - et donc apelle hotspot.php et non detail-hotspot.php
je te conseillerais de faire comme les autres lignes, pour la 3eme regle
soit
(3) RewriteRule ^wifi/wifi-([a-z]+)-([a-z]+)-([a-z]+)\.html$ wifi/hotspot.php?pays=$1&canton=$2&ville=$3 [L] |
|
| |
|
 |
bef1rst WRInaute occasionnel

Inscrit le: 14 Avr 2005 Messages: 101
|
Posté le : Mar Mai 24, 2005 17:48 Sujet du message: Je touche au but mais... |
|
|
ville.php :
<?
include "connexion.php";
$pays = $_GET['pays'];
$canton = $_GET['canton'];
echo $pays;
echo ' > ';
echo $canton;
echo '<br><br>';
$result = mysql_query("SELECT nom_ville FROM wifi_ville WHERE canton_ville='$canton'");
while ( $row = mysql_fetch_array($result))
{
echo '<a href="wifi-';
echo $pays;
echo '-';
echo $canton;
echo '-'.$row[nom_ville]. '.html">' .$row[nom_ville]. '</a><br><br>' ;
}
mysql_close();
?>
hotspot.php :
<?
include "connexion.php";
$pays = $_GET['pays'];
$canton = $_GET['canton'];
$ville = $_GET['ville'];
echo $pays;
echo ' > ';
echo $canton;
echo ' > ';
echo $ville;
echo '<br><br>';
$result = mysql_query("SELECT nom_hotspot FROM wifi_hotspot WHERE ville_hotspot='$ville'");
while ( $row = mysql_fetch_array($result))
{
echo '<a href="wifi-';
echo $pays;
echo '-';
echo $canton;
echo '-';
echo $ville;
echo '-'.$row[nom_hotspot]. '.html">' .$row[nom_hotspot]. '</a><br><br>' ;
}
mysql_close();
?>
et detail-hotspot.php :
<?
include "connexion.php";
$pays = $_GET['pays'];
$canton = $_GET['canton'];
$ville = $_GET['ville'];
$hotspot = $_GET['hotspot'];
echo $pays;
echo ' > ';
echo $canton;
echo ' > ';
echo $ville;
echo ' > ';
echo $hotspot;
echo '<br><br>';
$result = mysql_query("SELECT nom_hotspot,adresse_hotspot,plan_hotspot FROM wifi_hotspot WHERE nom_hotspot='$hotspot'");
while ( $row = mysql_fetch_array($result))
{
echo 'Hotspot : '.$row[nom_hotspot].'<br>' ;
echo 'Adresse : '.$row[adresse_hotspot].'<br>';
echo 'Plan : <a href='.$row[plan_hotspot].'>plan</a><br><br>';
}
mysql_close();
?>
Je pense que mes liens sont bien construits. J'ai toujours pris le même modele de page en page (ville.php, hotspot.php et detail-hotspot.php). Je vois mes liens qui sont bien ecrits dans mon navigateur (essaye en pointant ta souris sur mes liens, exemple : agip , http:**www.bef1rst.com/wifi/wifi-suisse-vaud-Lausanne.html). Pour moi, le problème vient plus de l'interpretation au niveau du fichier .htaccess ... Mais je ne vois toujours pas l'erreur... |
|
| |
|
 |
dasikund WRInaute occasionnel

Inscrit le: 28 Avr 2005 Messages: 134 Localisation: Paris
|
Posté le : Mar Mai 24, 2005 17:59 Sujet du message: Je touche au but mais... |
|
|
Oui, en effet, c'est bizarre...
Le problème ne vient pas de ton script et comme le souligne GAMING ZONE, le "-" peut être embarqué dans le (.*). Mais ceci est bizarre également, en effet, il trouve la bonne page, donc quelque part, c'est que ça fonctionne au niveau de l'URL rewriting.
J'avoue être à court d'idée pour t'aider malheureusement.
Juste, tu peux mettre des antislashes devant tes slashes dans tes règles (mais uniquement la partie \.html ; celle entourée de "^" et "$"), ça ne mange pas de pain.
Doug |
|
| |
|
 |
jeroen WRInaute accro

Inscrit le: 30 Aoû 2002 Messages: 2269
|
Posté le : Mar Mai 24, 2005 18:03 Sujet du message: Je touche au but mais... |
|
|
Sans lire exactement tes règles, je dirais qu'il faut dans un premier temps les inverser (de l'url la plus longue à la plus courte).
ca devrait résoudre ton problème. |
|
| |
|
 |
bef1rst WRInaute occasionnel

Inscrit le: 14 Avr 2005 Messages: 101
|
Posté le : Mar Mai 24, 2005 21:25 Sujet du message: Je touche au but mais... |
|
|
Miracle ! J'ai bidouillé un peu ma synthaxe et ça marche. J'en ai profité pour remettre les lignes dans un autre ordre.
Version définitive (que je vais backuper de ce pas) :
RewriteEngine on
RewriteRule ^wifi/wifi-(.*)-(.*)-(.*)-(.*)\.html$ wifi/detail-hotspot.php?pays=$1&canton=$2&ville=$3&hotspot=$4 [L]
RewriteRule ^wifi/wifi-(.*)-(.*)-(.*)\.html$ wifi/hotspot.php?pays=$1&canton=$2&ville=$3 [L]
RewriteRule ^wifi/wifi-([a-z]+)-([a-z]+)\.html$ wifi/ville.php?pays=$1&canton=$2 [L]
RewriteRule ^wifi/wifi-([a-z]+)\.html$ wifi/canton.php?pays=$1 [L]
Merci a vous tous pour votre aide, c'est très sympa ! |
|
| |
|
 |
| |
|
|