Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2231 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Réécriture d'URL...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Réécriture d'URL...

n°1216471
SatanKoRn
J'T'A'M !
Posté le 06-10-2005 à 13:00:04  profilanswer
 

Navré, je ne savais pas où poster ailleurs...
 
J'ai toujours des problèmes avec l'URL Rewriting avec Apache...
 
Ce que je voudrais, c'est que je puisse aller sur des URLs du type :


j'ai donc mis cela :  

Code :
  1. RewriteEngine on
  2. RewriteRule ^(.*)/index.html recherchePays.php?pays=$1
  3. RewriteRule ^(.*)/(.*)/index.html dep.php?pays=$1&dep=$2
  4. RewriteRule ^(.*)/(.*)/(.*)/index.html ville.php?pays=$1&dep=$2&ville=$3 [L]


 
Mais ça ne fonctionne pas pour les départements (ni pour les villes je suppose)... alors je ne sais pas quoi faire... si j'inverse tous les RewriteRule, ça ne fonctionne pas non plus, et ça me renvoit sur une page d'erreur...
 
Je suis un peu perdu... si quelqu'un veut bien m'aider, ça serait sympa...  :ange:  
 
Détail sup. : quand je vais à http://www.site.com/France/Département1/index.html, dans mon script sur dep.php, quand je récupère les variables $_GET["dep"] = "Département1"; mais $_GET["pays"] = "recherchePays.php"... alors voila, si ça peut aider à trouver les erreurs (y'en a sûrement pas qu'une  :( )


---------------
Matt
mood
Publicité
Posté le 06-10-2005 à 13:00:04  profilanswer
 

n°1216480
sielfried
Posté le 06-10-2005 à 13:06:59  profilanswer
 

Déjà dans cet ordre tes règles ne risquent pas de matcher, vu que la première englobe les deux suivantes.
 
Ensuite, (.*) est par défaut "greedy", ça veut dire qu'avec un début de masque en ^(.*)/ sur une url en blabla/truc/chose/machin.html, la parenthèse va matcher blabla/truc/chose et pas juste blabla.
 
Donc idéalement ici, tu mets pas (.*) mais ([^/]+), et tu inverses tes règles. (Et tu rajoutes des [L] partout tant qu'à faire.)


Message édité par sielfried le 06-10-2005 à 13:07:43
n°1216486
SatanKoRn
J'T'A'M !
Posté le 06-10-2005 à 13:15:34  profilanswer
 

c'est vrai que ça serait mieux pour le "/"...
mais à quoi sert le[L]
 
Merci des conseils !


---------------
Matt
n°1216496
sielfried
Posté le 06-10-2005 à 13:33:52  profilanswer
 

Ca dit au truc de s'arrêter si l'une des règles matche.

n°1216508
SatanKoRn
J'T'A'M !
Posté le 06-10-2005 à 13:42:08  profilanswer
 

ok!
bin merci beaucoup! ça marche !
 
par contre, reste un détail. Maintenant, j'aimerais faire en sorte que si le gars va sur http://www.monsite.com/admin ou http://www.monsite.com/admin/, eh bien qu'il arrive justement sur http://www.monsite.com/admin/index.php


---------------
Matt
n°1216513
sielfried
Posté le 06-10-2005 à 13:44:31  profilanswer
 

Y'a pas besoin d'url rewriting pour ça, c'est automatique à moins que ton apache soit configuré super bizarrement. :spamafote:

n°1254565
SatanKoRn
J'T'A'M !
Posté le 28-11-2005 à 10:57:36  profilanswer
 

Hello !
J'ai un petit problème :  
J'avais écrit :  
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/index.html ville.php?pays=$1&canton=$2&region=$3&ville=$4&page=1
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/liste_([01-9]+).html ville.php?pays=$1&canton=$2&region=$3&ville=$4&page=$5
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/index.html region.php?pays=$1&canton=$2&region=$3
RewriteRule ^([^/]+)/([^/]+)/index.html canton.php?pays=$1&canton=$2
RewriteRule ^([^/]+)/index.html recherchePays.php?pays=$1
 
 
Mais maintenant, j'aimerais que quand le visiteur va sur  
http://www.monsite.com/articleUnTel/
ça le redirige sur www.monsite.com/produit.php?nom=articleUnTel
j'ai essayé :
RewriteRule ^([^/]+)/ produit.php?nom=$1
 
mais ça ne marche pas... quelqu'un pourrait-il m'aider ?
 
edit : ça ne marche pas, parce que quand je vais sur www.monsite.com/France/index.html ça ne me redirige pas sur la bonne page (rien du tout en fait, ou alors la page produit.php, mais pourquoi ?


Message édité par SatanKoRn le 28-11-2005 à 10:58:50

---------------
Matt
n°1254568
sielfried
Posté le 28-11-2005 à 11:03:06  profilanswer
 

J'ai pas le temps de regarder en détails là (dois partir), mais pourquoi un espace entre le / et produit.php dans ta règle ?


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1254608
SatanKoRn
J'T'A'M !
Posté le 28-11-2005 à 12:31:02  profilanswer
 

parce que le but, c'est que quand tu vas sur  
http://www.monsite.com/ordinateurs/
ça te dirige sur
http://www.monsite.com/produit.php?nom=ordinateurs


---------------
Matt
n°1254631
art_dupond
je suis neuneu... oui oui !!
Posté le 28-11-2005 à 13:18:00  profilanswer
 

manquerait pas un .
 
RewriteRule ^(.[^/]+)/? produit.php?nom=$1
 
 
et je rajouterais un ? après le / au cas où l'url ne se terminerait pas par un /


Message édité par art_dupond le 28-11-2005 à 13:18:59

---------------
oui oui
mood
Publicité
Posté le 28-11-2005 à 13:18:00  profilanswer
 

n°1254633
SatanKoRn
J'T'A'M !
Posté le 28-11-2005 à 13:31:04  profilanswer
 

ça n'a pas l'air d'être ça, parce que je n'arrive même plus à accéder au site comme ça... (donc à une page du genre www.monsite.com/page.php)


---------------
Matt
n°1254637
art_dupond
je suis neuneu... oui oui !!
Posté le 28-11-2005 à 13:34:57  profilanswer
 

oui mais ([^/]+)
 
ca récupère : RIEN (qui ne comprend pas "/" ) de longueur 1 ou plus. non ?


Message édité par art_dupond le 28-11-2005 à 13:44:11

---------------
oui oui
n°1254842
sielfried
Posté le 28-11-2005 à 18:08:35  profilanswer
 

Oui bon j'ai dit n'importe quoi plus haut, j'ai même pas eu le temps de lire le truc correctement.
 
Bon sinon, moi le masque m'a l'air bon. Et d'ailleurs je viens de le tester en local et il fonctionne nickel.
 
Si tu vas sur http://www.monsite.com/ordinateurs/ (avec le / à la fin), ça redirige pas et sort un 404 donc ? Etrange.
 
art_dupond : euh, ouais enfin [^/] ça veut dire tout sauf un slash, quoi. [:dawa]


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1254967
SatanKoRn
J'T'A'M !
Posté le 28-11-2005 à 21:42:35  profilanswer
 

avec RewriteRule ^([^/]+)/ fille.php?pseudo=$1, oui la redirection est ok. le seul problème est que cette redirection :  
RewriteRule ^([^/]+)/index.html recherchePays.php?pays=$1  
ne fonctionne plus... et je vois pas pourquoi...


---------------
Matt
n°1254970
sielfried
Posté le 28-11-2005 à 21:45:25  profilanswer
 

Tu les as mises dans quel ordre ? Si ^([^/]+)/ fille.php?pseudo=$1 est avant l'autre, forcément. Inverse les. :spamafote:


Message édité par sielfried le 28-11-2005 à 21:45:38

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1254979
SatanKoRn
J'T'A'M !
Posté le 28-11-2005 à 21:54:13  profilanswer
 

bah non, même si je mets ^([^/]+)/ fille.php?pseudo=$1 tout à la fin, ça ne marche pas...


---------------
Matt
n°1254991
art_dupond
je suis neuneu... oui oui !!
Posté le 28-11-2005 à 22:14:18  profilanswer
 

sielfried a écrit :

Oui bon j'ai dit n'importe quoi plus haut, j'ai même pas eu le temps de lire le truc correctement.
 
Bon sinon, moi le masque m'a l'air bon. Et d'ailleurs je viens de le tester en local et il fonctionne nickel.
 
Si tu vas sur http://www.monsite.com/ordinateurs/ (avec le / à la fin), ça redirige pas et sort un 404 donc ? Etrange.
 
art_dupond : euh, ouais enfin [^/] ça veut dire tout sauf un slash, quoi. [:dawa]


 
ok :)
 
je pensais qu'il fallait dire ce qu'on voulait avant de dire ce qu'on ne voulait pas.
 
au passage, j'ai aussi une question sur l'url rewriting http://forum.hardware.fr/forum2.ph [...] w=0&nojs=0 :jap:


Message édité par art_dupond le 28-11-2005 à 22:15:35

---------------
oui oui
n°1255014
sielfried
Posté le 28-11-2005 à 23:03:42  profilanswer
 

SatanKoRn a écrit :

bah non, même si je mets ^([^/]+)/ fille.php?pseudo=$1 tout à la fin, ça ne marche pas...


 
Balance ton .htaccess complet pour y voir plus clair stp.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1255020
SatanKoRn
J'T'A'M !
Posté le 28-11-2005 à 23:10:29  profilanswer
 

Voilà :  
 
 
RewriteEngine on
 
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/index.html ville.php?pays=$1&canton=$2&region=$3&ville=$4&page=1
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/liste_([01-9]+).html ville.php?pays=$1&canton=$2&region=$3&ville=$4&page=$5
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/index.html region.php?pays=$1&canton=$2&region=$3
RewriteRule ^([^/]+)/([^/]+)/index.html canton.php?pays=$1&canton=$2
RewriteRule ^([^/]+)/index.html recherchePays.php?pays=$1
 
 
RewriteRule ^(.+)images(.*)/([^/]+).gif images$2/$3.gif
RewriteRule ^(.+)images(.*)/([^/]+).jpg images$2/$3.jpg
 
RewriteRule ^(.*)/([^/]+).css http://www.monsite.com/$2.css
RewriteRule ^(.*)/([^/]+).class http://www.monsite.com/$2.class
RewriteRule ^(.*)/([^/]+).php http://www.monsite.com/$2.php
 
RewriteRule ^([^/]+).html fille.php?pseudo=$1
RewriteRule ^([^/]+)/ fille.php?pseudo=$1 [L]
 


---------------
Matt
n°1255031
sielfried
Posté le 28-11-2005 à 23:35:55  profilanswer
 

Testé en local et la dernière règle matche sans problème.
 
Tu tapes quelle url exactement ?


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1255640
SatanKoRn
J'T'A'M !
Posté le 29-11-2005 à 21:54:27  profilanswer
 
n°1255791
sielfried
Posté le 30-11-2005 à 09:15:09  profilanswer
 

Oui ben forcément, faut mettre des [L] après chaque ligne là sinon il les interprète "récursivement".


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1257149
SatanKoRn
J'T'A'M !
Posté le 01-12-2005 à 22:23:16  profilanswer
 

ah ! je vais tester ça ! Merci ;-)


---------------
Matt
n°1257165
SatanKoRn
J'T'A'M !
Posté le 01-12-2005 à 22:35:37  profilanswer
 

ok, merci beaucoup, ça marche pour presque tout... sauf pour les images qui ne s'affichent plus... par exemple :  
http://www.monsite.com/images/sh_2.gif


---------------
Matt
n°1257195
sielfried
Posté le 01-12-2005 à 23:38:15  profilanswer
 

Ton masque veut au moins un caractère avant "images" là...


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1257828
SatanKoRn
J'T'A'M !
Posté le 02-12-2005 à 21:35:13  profilanswer
 

j'ai changé le (.+) en (.*), mais ça ne marche tjs pas... je devrais modifier quoi à votre avis ?


---------------
Matt
n°1257968
sielfried
Posté le 03-12-2005 à 08:18:08  profilanswer
 

Ca devrait marcher, y'a pas de raison.
 
Mais j'me demande à quoi sert vraiment ce masque, là, il recopie presque exactement ce qu'il capte, à part ce qu'il y a éventuellement juste avant "images". [:figti]


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1264743
SatanKoRn
J'T'A'M !
Posté le 12-12-2005 à 17:23:52  profilanswer
 

justement c'est son but.  
 
ca devrait peut-être marcher, mais ce n'est pas le cas...
 
que dois-je faire ? :-(


---------------
Matt
n°1269576
SatanKoRn
J'T'A'M !
Posté le 18-12-2005 à 19:11:34  profilanswer
 

le problème, c'est que les images qui ne sont pas dans le dossier principal   (par exemple : www.monsite.com/images/france.gif) ne s'affiche pas...
 
que feriez-vous à ma place ?
 
PS : c'est urgent...

n°1269627
SatanKoRn
J'T'A'M !
Posté le 18-12-2005 à 22:10:56  profilanswer
 

J'ai changé et j'ai mis cela : (cependant, tout marche, sauf la redirection pour la page fille.php?pseudo=...)
 
 
RewriteEngine on
 
RewriteRule ^http://www.monsite.com/([^/]+)/ fille.php?pseudo=$1 [L]
 
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/index.html ville.php?pays=$1&canton=$2&region=$3&ville=$4&page=1 [L]
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/liste_([01-9]+).html ville.php?pays=$1&canton=$2&region=$3&ville=$4&page=$5 [L]
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/index.html region.php?pays=$1&canton=$2&region=$3 [L]
RewriteRule ^([^/]+)/([^/]+)/index.html canton.php?pays=$1&canton=$2 [L]
RewriteRule ^([^/]+)/index.html recherchePays.php?pays=$1 [L]
 
RewriteRule ^http://www.monsite.com/(.+)images(.*)/([^/]+).gif images$2/$3.gif [L]
RewriteRule ^http://www.monsite.com/(.+)images(.*)/([^/]+).jpg images$2/$3.jpg [L]
 
RewriteRule ^(.+)/([^/]+).css http://www.monsite.com/$2.css [L]
RewriteRule ^(.+)/([^/]+).class http://www.monsite.com/$2.class [L]
RewriteRule ^(.+)/([^/]+).php http://www.monsite.com/$2.php [L]
 

n°1400572
El_gringo
Posté le 04-07-2006 à 17:41:39  profilanswer
 

Petit problème : j'ai cette règle toute bête  


RewriteEngine on
RewriteRule ^.*\.gif$  -  [L]
RewriteRule ^.*\.jpg$  -  [L]
RewriteRule ^.*\.jpeg$  -  [L]
RewriteRule ^.*\.png$  -  [L]
RewriteRule ^([a-z]+)$  http://www.monsite.eu/webcv/index.php5?cat=$1  [L]


 
Problème : quand j'entre l'adresse :  
http://www.monsite.eu/webcv/experience
l'url est bien réécrite, mais c'est justement l'adresse réécrite qui est affichée dans le navigateur. Je voudrais que ça affiche l'url "esthetique" ...


Message édité par El_gringo le 04-07-2006 à 18:00:19

---------------
Les Vers Solitaires, on aime ... ou pas !
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Réécriture d'URL...

 

Sujets relatifs
PHP5 - Récupérer la variable d'une URL pour requête dans un flux XMLHtaccess : URL Rewriting & header 301
URL Rewriting - quelques questions...regexp remplacer un mot dans une URL
Convertir les HTML Entities / convertir l'URL Encode[PHP] Intégrer une variable récupérée d'une URL dans un form
Url decode et accents ?transmission de paramètre a un .swf via l'URL
remplacer une URL dans une string par une balise html [Résolu][JS] Réécriture d'URL
Plus de sujets relatifs à : Réécriture d'URL...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR