url_rewrite

url_rewrite - Divers - Programmation

Marsh Posté le 24-02-2004 à 09:48:23    

salut, je suis en train de mettre en place un url rewriting et j'ai un petit souci.  
 

Code :
  1. RewriteEngine On
  2. RewriteRule ^\/([0-9a-z]+)/([a-z]+)/$ index.php?r=$1&lang=$2  [L]


 
et les liens de types :

Code :
  1. <a href="/participation/fr/">ssxxxs</a>

[/cpp]
 
seulement à l'éxecution, le serveur me renvoie la page participation, mais pas l'inclusion de cette page dans index.php ...  
 
bref, j'comprend pas  :heink:.
 
Ma règle et naze, y'a un truc que j'ai pas saisi dans l'url_rewrite ?  [:spamafote]


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 24-02-2004 à 09:48:23   

Reply

Marsh Posté le 24-02-2004 à 10:32:47    

bon, visiblement c'est une histoire de rep :/
 
je travaille dans un repertoire qui se trouve dans mon rep root apache  
 
- www/
  |_ monrep/
 
et apparemment, j'arrive pas a matcher le bon rep déjà :o
 
j'ai lu ca :
 

Citation :

Moved DocumentRoot
 
Description:
 
    Usually the DocumentRoot of the webserver directly relates to the URL "/". But often this data is not really of top-level priority, it is perhaps just one entity of a lot of data pools. For instance at our Intranet sites there are /e/www/ (the homepage for WWW), /e/sww/ (the homepage for the Intranet) etc. Now because the data of the DocumentRoot stays at /e/www/ we had to make sure that all inlined images and other stuff inside this data pool work for subsequent requests.
Solution:
 
    We just redirect the URL / to /e/www/. While is seems trivial it is actually trivial with mod_rewrite, only. Because the typical old mechanisms of URL Aliases (as provides by mod_alias and friends) only used prefix matching. With this you cannot do such a redirection because the DocumentRoot is a prefix of all URLs. With mod_rewrite it is really trivial:
 
RewriteEngine on
RewriteRule   ^/$  /e/www/  [R]


 
j'ai donc ajouté ca :
RewriteEngine on
RewriteRule   ^/$  /monrep/  [R]
 
mais ca marche pas  :fou: , comprend pas  :sweat:  
 


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 24-02-2004 à 11:22:13    

la gestion de répertoires virtuels est souvent casse tête en mod_rewrite, en plus ça flingue les liens vers les images et css..  
 
je teste un truc et je réponds après


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 24-02-2004 à 11:36:23    

Sh@rdar a écrit :

la gestion de répertoires virtuels est souvent casse tête en mod_rewrite, en plus ça flingue les liens vers les images et css..  
 
je teste un truc et je réponds après


thx m'sieur :jap:


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 24-02-2004 à 11:49:02    

retire ton / de début sur l'url source pour voir, sur mon serveur ça marche sans mais pas avec...
 
sinon je pige pas trop ton histoire de rep, ton htaccess se trouve ou ? et la page cible ou ?
 
et n'utilise pas trop de conditions chainées, ça te fait un paquet de requêtes supplémentaires (monte le rewriteloglevel tu vas avoir des surprises :D)
 
EDIT : bon ok j'ai compris mais le prob vient bien à priori du / en trop, chez moi ça marche :)
 
EDIT FINAL : mon exemple qui fonctionne (apache 2.0 / php 4.3.1)
à toi de modifier en conséquence

Code :
  1. RewriteRule       ^([a-z]*)/([a-z]*)/$                  /test.php?$1=$1&$2=$2  [L]


 
avec
|-.htacess (ma ligne au dessus)
|-test.php (<? print_r($_GET); ?> )
|--/test/ (vide)


Message édité par Sh@rdar le 24-02-2004 à 11:58:51

---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 24-02-2004 à 12:58:58    

merci Sh@rdar, mais bon ca marche tjrs pas alors j'ai changé ma règle :o
 
 
lien de type :

Code :
  1. participation_fr.html


Code :
  1. et RewriteRule ^([0-9a-z]+)_([a-z]+).html$ index.php?r=$1&lang=$2  [L]

Rulezzz
 
je verrais cette histoire de repertoire plus tard, ca fait chier [:kiki]


Message édité par simogeo le 24-02-2004 à 12:59:12

---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 24-02-2004 à 13:02:35    

fais gaffe au point, faut toujours l'échapper sinon c'est un générique


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 24-02-2004 à 14:01:04    

Sh@rdar a écrit :

fais gaffe au point, faut toujours l'échapper sinon c'est un générique


genre, il est conseillé de faire ?
 

Code :
  1. RewriteRule ^([0-9a-z]+)_([a-z]+)\.html$ index\.php?r=$1&lang=$2  [L]

 
 
le point represente un carcatère unique il me semble
mais pourquoi ma règle s'applique sans l'échappement alors [:gratgrat] ?


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 24-02-2004 à 16:25:44    

rien à voir, mais tant qu'a avoir de belles urls, pourquoi tu ferais pas
/fr/participation
 
(sans le .html et avec la langue en premier)
 
aussi, n'oublie pas que les termes utilisés dans tes urls ne sont pas necessairement valides ds les deux langues, et  
 
/en/aide ou /fr/help, je trouverait ça un peu bof , par exemple ;)
 
stockes la langue dans un cookie ou en session si tu as déjà un cookie pour cette appli, et vire la de l'url ;)
 
(et donc urls >> /participation, /help, /aide et ça choque moins quelque soit la langue)


Message édité par the real moins moins le 24-02-2004 à 16:26:21

---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 24-02-2004 à 18:03:13    

-- t'as rien lu :o


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 24-02-2004 à 18:03:13   

Reply

Marsh Posté le 24-02-2004 à 18:03:51    

et afin de laisser le choix d'implementer ou non ce mode, je définis une globale dans mon appli
 
mes liens sont formatés de facon standard :
index.php?rub=news&ampid=78
 
j'ai une fonction URLrewrite() qui contient les ereg pour formater mes liens et j'appelle cette fonction de callback en gerant le flux HTML via PHP
-->
if (URL_REWRITE==1) ob_start('URLrewrite'); else ob_start();
 
que pensez vous de cette méthode ?
 
y'a t'il plus simple ? plus optimisé ? ( les regex c'est lourd ) je suis preneur de toutes vos idées.


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 24-02-2004 à 18:16:19    

simogeo a écrit :

-- t'as rien lu :o

j'ai bien commencé mon post par "rien à voir".
mtnt si tu veux pas que je te donne mon avis, je dis plus rien, et basta, fait tes urls de merde si tu veux [:kiki]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 24-02-2004 à 18:50:53    

c'est pas trop lourd ton système de regexp ??
 
moi j'utilise un tableau multidimensionnel
 
 
$PageList = array (
  // (page php si mod_rewrite desactivé), Page HTML FR , Page HTML US , Page HTML DE
  'Home' => array ('accueil','home','haus')
);
 
puis j'applique une tite fonction url(Page) qui en fonction de ma  variable de langue me sort le lien vers la page html correspondante avec ou non les variables supplémentaires (comme ça une page différente selon la version = bon référencement) ou bien la page php si on désactive le module de réécriture (avec enocdage base64 des variables)


Message édité par Sh@rdar le 24-02-2004 à 18:55:16

---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 24-02-2004 à 18:57:32    

the real moins moins a écrit :

j'ai bien commencé mon post par "rien à voir".
mtnt si tu veux pas que je te donne mon avis, je dis plus rien, et basta, fait tes urls de merde si tu veux [:kiki]


[:itm]


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 24-02-2004 à 19:15:23    

[:drapo]


---------------
IVG en france
Reply

Marsh Posté le 24-02-2004 à 19:59:45    

Sh@rdar a écrit :

c'est pas trop lourd ton système de regexp ??


 
ben, pas tant que ca en fait mais c'est pour un petit site sans trop de compelxité  [:spamafote]  
 

Sh@rdar a écrit :


moi j'utilise un tableau multidimensionnel
 
 
$PageList = array (
  // (page php si mod_rewrite desactivé), Page HTML FR , Page HTML US , Page HTML DE
  'Home' => array ('accueil','home','haus')
);
 
puis j'applique une tite fonction url(Page) qui en fonction de ma  variable de langue me sort le lien vers la page html correspondante avec ou non les variables supplémentaires (comme ça une page différente selon la version = bon référencement) ou bien la page php si on désactive le module de réécriture (avec enocdage base64 des variables)


ouais, ca garde la cohèrence du langage, c pas mal  :jap: et optimise le référencement comme le precisais le génialissime moins moins [:cupra]
 
.. par contre je saisis pas l'intérêt de l'encodage en base64()
mais j'vais peut-etre la saisir rapidement ... j'ai un site en francais, anglais, arabe, à faire  :D


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 25-02-2004 à 11:05:24    

simogeo a écrit :

et afin de laisser le choix d'implementer ou non ce mode, je définis une globale dans mon appli
 
mes liens sont formatés de facon standard :
index.php?rub=news&ampid=78
 
j'ai une fonction URLrewrite() qui contient les ereg pour formater mes liens et j'appelle cette fonction de callback en gerant le flux HTML via PHP
-->
if (URL_REWRITE==1) ob_start('URLrewrite'); else ob_start();
 
que pensez vous de cette méthode ?
 
y'a t'il plus simple ? plus optimisé ? ( les regex c'est lourd ) je suis preneur de toutes vos idées.  


 
up  :)  :)


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 25-02-2004 à 17:11:45    

[:up]


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed