Réécriture d'URL... - PHP - Programmation
Marsh Posté le 06-10-2005 à 13:06:59
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.)
Marsh Posté le 06-10-2005 à 13:15:34
c'est vrai que ça serait mieux pour le "/"...
mais à quoi sert le[L]
Merci des conseils !
Marsh Posté le 06-10-2005 à 13:42:08
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
Marsh Posté le 06-10-2005 à 13:44:31
Y'a pas besoin d'url rewriting pour ça, c'est automatique à moins que ton apache soit configuré super bizarrement.
Marsh Posté le 28-11-2005 à 10:57:36
Hello !
J'ai un petit problème :
J'avais écrit :
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/index.html ville.php?pays=$1&canton=$2®ion=$3&ville=$4&page=1
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/liste_([01-9]+).html ville.php?pays=$1&canton=$2®ion=$3&ville=$4&page=$5
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/index.html region.php?pays=$1&canton=$2®ion=$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 ?
Marsh Posté le 28-11-2005 à 11:03:06
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 ?
Marsh Posté le 28-11-2005 à 12:31:02
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
Marsh Posté le 28-11-2005 à 13:31:04
ç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)
Marsh Posté le 28-11-2005 à 18:08:35
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.
Marsh Posté le 28-11-2005 à 21:42:35
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...
Marsh Posté le 28-11-2005 à 21:45:25
Tu les as mises dans quel ordre ? Si ^([^/]+)/ fille.php?pseudo=$1 est avant l'autre, forcément. Inverse les.
Marsh Posté le 28-11-2005 à 21:54:13
bah non, même si je mets ^([^/]+)/ fille.php?pseudo=$1 tout à la fin, ça ne marche pas...
Marsh Posté le 28-11-2005 à 22:14:18
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. |
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
Marsh Posté le 28-11-2005 à 23:03:42
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.
Marsh Posté le 28-11-2005 à 23:10:29
Voilà :
RewriteEngine on
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/index.html ville.php?pays=$1&canton=$2®ion=$3&ville=$4&page=1
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/liste_([01-9]+).html ville.php?pays=$1&canton=$2®ion=$3&ville=$4&page=$5
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/index.html region.php?pays=$1&canton=$2®ion=$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]
Marsh Posté le 28-11-2005 à 23:35:55
Testé en local et la dernière règle matche sans problème.
Tu tapes quelle url exactement ?
Marsh Posté le 29-11-2005 à 21:54:27
http://www.monsite.com/Suisse/index.html
ou même
http://www.monsite.com/Suisse/Vaud [...] index.html
Marsh Posté le 30-11-2005 à 09:15:09
Oui ben forcément, faut mettre des [L] après chaque ligne là sinon il les interprète "récursivement".
Marsh Posté le 01-12-2005 à 22:35:37
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
Marsh Posté le 01-12-2005 à 23:38:15
Ton masque veut au moins un caractère avant "images" là...
Marsh Posté le 02-12-2005 à 21:35:13
j'ai changé le (.+) en (.*), mais ça ne marche tjs pas... je devrais modifier quoi à votre avis ?
Marsh Posté le 03-12-2005 à 08:18:08
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".
Marsh Posté le 12-12-2005 à 17:23:52
justement c'est son but.
ca devrait peut-être marcher, mais ce n'est pas le cas...
que dois-je faire ? :-(
Marsh Posté le 18-12-2005 à 19:11:34
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...
Marsh Posté le 18-12-2005 à 22:10:56
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®ion=$3&ville=$4&page=1 [L]
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/liste_([01-9]+).html ville.php?pays=$1&canton=$2®ion=$3&ville=$4&page=$5 [L]
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/index.html region.php?pays=$1&canton=$2®ion=$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]
Marsh Posté le 04-07-2006 à 17:41:39
Petit problème : j'ai cette règle toute bête
|
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" ...
Marsh Posté le 06-10-2005 à 13:00:04
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 :
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...
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