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

  FORUM HardWare.fr
  Programmation
  Divers

  url_rewrite

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

url_rewrite

n°652676
simogeo
j'ai jamais tué de chats, ...
Posté le 24-02-2004 à 09:48:23  profilanswer
 

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
mood
Publicité
Posté le 24-02-2004 à 09:48:23  profilanswer
 

n°652727
simogeo
j'ai jamais tué de chats, ...
Posté le 24-02-2004 à 10:32:47  profilanswer
 

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
n°652841
Sh@rdar
Ex-PhPéteur
Posté le 24-02-2004 à 11:22:13  profilanswer
 

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
n°652858
simogeo
j'ai jamais tué de chats, ...
Posté le 24-02-2004 à 11:36:23  profilanswer
 

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
n°652887
Sh@rdar
Ex-PhPéteur
Posté le 24-02-2004 à 11:49:02  profilanswer
 

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
n°652997
simogeo
j'ai jamais tué de chats, ...
Posté le 24-02-2004 à 12:58:58  profilanswer
 

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
n°653002
Sh@rdar
Ex-PhPéteur
Posté le 24-02-2004 à 13:02:35  profilanswer
 

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
n°653067
simogeo
j'ai jamais tué de chats, ...
Posté le 24-02-2004 à 14:01:04  profilanswer
 

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
n°653319
the real m​oins moins
Posté le 24-02-2004 à 16:25:44  profilanswer
 

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 ?
n°653455
simogeo
j'ai jamais tué de chats, ...
Posté le 24-02-2004 à 18:03:13  profilanswer
 

-- t'as rien lu :o


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
mood
Publicité
Posté le 24-02-2004 à 18:03:13  profilanswer
 

n°653457
simogeo
j'ai jamais tué de chats, ...
Posté le 24-02-2004 à 18:03:51  profilanswer
 

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
n°653480
the real m​oins moins
Posté le 24-02-2004 à 18:16:19  profilanswer
 

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 ?
n°653542
Sh@rdar
Ex-PhPéteur
Posté le 24-02-2004 à 18:50:53  profilanswer
 

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
n°653548
simogeo
j'ai jamais tué de chats, ...
Posté le 24-02-2004 à 18:57:32  profilanswer
 

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
n°653563
uriel
blood pt.2
Posté le 24-02-2004 à 19:15:23  profilanswer
 

[:drapo]


---------------
IVG en france
n°653618
simogeo
j'ai jamais tué de chats, ...
Posté le 24-02-2004 à 19:59:45  profilanswer
 

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
n°654324
simogeo
j'ai jamais tué de chats, ...
Posté le 25-02-2004 à 11:05:24  profilanswer
 

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
n°654891
simogeo
j'ai jamais tué de chats, ...
Posté le 25-02-2004 à 17:11:45  profilanswer
 

[:up]


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

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

  url_rewrite

 

Sujets relatifs
Apache 2.0 et mod_rewriteApache mod_rewrite fait n'importe quoi ?
[Apache & PHP] Probleme de 'casse' avec mod_rewrite[Apache / PHP] Problème de transmission de variable avec mod_rewrite
Plus de sujets relatifs à : url_rewrite


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)