Rewriting : need help

Nouveau WRInaute
Bonjour à tous.
Pour commencer je tiens a dire que j'ai fait pas mal de recherche sur le rewriting (sur ce site et ailleurs) alors si il y a un post qui traite de ce qui va suivre merci de me le signaler. :wink:

En fait j'ai un site ou j'ai deja fait le rewriting. Je veux le modifier car j'avais fait cela rapido. Et ce qui me semblait anodin est en fait un vrai calvaire. Mais bon... :roll:

Voici mon .htaccess actuel

----------------------------------------------------------
RewriteEngine on


#livre
RewriteRule ^livre-(.+)-(.+)-(.+)\.html$ index.php?rub=$1&IdLivre=$2&page=2 [L]


#site
RewriteRule ^site-(.+)-(.+)-(.+)\.html$ index.php?rub=$1&IdSite=$2&page=1 [L]

#article
RewriteRule ^article-(.+)-(.+)-(.+)\.html$ index.php?rub=$1&IdArt=$2 [L]


#articles spe
RewriteRule ^spe-(.+)-(.+)\.html$ index.php?rub=spe&pagespe=$1 [L]

#1 rewrite pour les sous rubriques
RewriteRule ^(.+)-(.+)\.html$ index.php?rub=$1&souRub=$2 [L]

#2 rewrite pour la page d acceuil
RewriteRule ^index.html$ index.php?rub=home [L]

#3 rewrite pour les rubriques
RewriteRule ^(.+).html$ index.php?rub=$1 [L]


----------------------------------------------------------------------

Et avec ca j'obtiens une URL suivante :
http://www.monsite.com/artice-rubrique- ... livre.html

cad:
com/type-rubrique-id-titre (entre point)

La première des choses que je voudrais faire c'est de séparer mes différents éléments par des "/" et donc de créer des sous répertoires virtuels:
/com/type/rubrique/id/titre (entre point)
Alors j'ai fait pas mal de test et pourtant j'arrive a rien.

Pour mon deuxième problème je préfères revenir une fois que cela sera fait.
Merci a tous
 
WRInaute passionné
Code:
#livre
RewriteRule ^livre/(.+)/(.+)/(.+)\.html$ index.php?rub=$1&IdLivre=$2&page=2 [L]

et il faut changer toutes les url dans la page index.php car tu as changé de repertoire (en tous cas pour le navigateur)
 
WRInaute discret
Salut,

Si ce qui est déjà en place fonctionne et que tu souhaites uniquement créer des sous-répertoires virtuels tu peux essayer un truc comme ceci :

Code:
RewriteEngine on


#livre
RewriteRule ^livre\/(.+)\/(.+)\/(.+)\.html$ index.php?rub=$1&IdLivre=$2&page=2 [L]


#site
RewriteRule ^site\/(.+)\/(.+)\/(.+)\.html$ index.php?rub=$1&IdSite=$2&page=1 [L]

#article
RewriteRule ^article\/(.+)\/(.+)\/(.+)\.html$ index.php?rub=$1&IdArt=$2 [L]


#articles spe
RewriteRule ^spe\/(.+)\/(.+)\.html$ index.php?rub=spe&pagespe=$1 [L]

Tiens nous au courant.

A+

Doug
 
Nouveau WRInaute
Merci pour votre rapidité.
Pour ce qui est des url on est bien d'accord sur le fait qu'il faille changer les liens. On va prendre l'exemple des articles. Voici le lien de mon fichier php
Code:
href='article/".$rub."/".$tableau2['IdArticle']."/".$ttt.".html' 

Ma fonction $ttt étant une fonction php replace du type:
$ttt = str_replace(" ","-",$ttt);
...
...
...

J'ai donc essayé vos codes (il me semble cependant que je l'avais déjà fait). Bon j'ai pas creusé réellement mais je crois avoir vu que pour mettre des "/" dans le htaccess il fallait bien mettre "\/" et non "/". Mais bon la dessus je peux me tromper... :?

J'ai donc essayé vos codes et ca marche pas. C'est bizarre car pour moi ton code est bon Doug. Je vais continuer à chercher et je vous tiens au courant.
Merci[/code]
 
WRInaute passionné
1/ Contrairement à ce qu'a dit dasikund, ça ne sert à rien déchapper le slash
2/ Donne nous exactement l'erreur, car la regle est bonne donc le pb se situe ailleurs (ce n'est pas un pb de rewriting)
 
Nouveau WRInaute
Bah c'est un peu bizarre. Selon mes différents test soit c'est une page vide soit il m'affiche la page sans le css et sans les images. C'est a dire que je me retrouve sur un site en vrac.
 
WRInaute accro
ton css est probablement mal linké.

Pour la page index.php(?fsdfqez), un css situé à la racine du site se trouve via "styles.css"; mais pour une page /livres/321421.html, ce même fichier se trouve via "./styles.css" ;)
 
WRInaute passionné
Donc le rewriting marche !
Ton problème est que comme tu a changé de repertoire, ton navigateur ne reconnait plus les liens.
comme je l'ai dit dans mon premier message, il faut changer les URL dans la page.
Pour t'en convaincre, affiche la source de ta page renvoyée par le rewrite et constate que tous les liens ont changés...

tu peux mettre entre <head> et </head>
Code:
<base href="la base de tes url">
 
WRInaute discret
Salut,

@jeroen : je pensais qu'il fallait échapper les caractères spéciaux car la première partie de l'URL rewriting fonctionne selon le mode des expression régulières, et le slash en fait partie. Bon, si cela n'est pas nécessaire, ça ne mange pas de pain pour autant ;).

@gehan : pour ton problème c'est en effet bizarre, essaie peut-être de faire un test avec des pages bidons, du genre <a href="youpi/yipaa/test.htm"> et une règle : ^(.+)\/(.+)\/(.+)\.htm$ test.php?youpi=$1&yipaa=$2 [L] et bien entendu la page test.php :p.

A+

Doug
 
Nouveau WRInaute
Merci a tous.
J'ai meme pas le temps de tout tester tellement vous allez vite. Au moins c cool ... :D
Je regarde tout ca mais l'idée de HawkEye est pas bete.
Allez zou au boulot.

@ jeroen: y'a pas de problème sur les url, je suis totalement convaincu mais c vrai que j'ai zappé le css. j'étais persuadué que c'était un pb de rewriting. Car en fait mon css n'est appelé que dans mon index. Tout le reste fonctionne en include et le css n'est donc pas appelé fichier par fichier. merci
 
Nouveau WRInaute
Bon ya de la progression :D
Vous aviez raison, ce n'était pas un problème de rewriting.
En fait mon site est en php. Tous est géré en include c'est a dire que le fond de mon site est pareil mais qu'il n'y a que l'intérieur des pages qui changent.

Jusqu'alors je ne faisais référence qu'une seule fois a mon fichier css - cad dans mon index - Et en effet si je rajoute le css dans mes fichiers cela marche (en changeant le chemin bien sur). Il faut également que je change les liens de mes images ( :wink: merci jeroen).

Par contre j'ai un nouveau problème. Il m'affiche bien ma page centrale mais du coup c'est le fond de mon site qu'il n'affiche plus - il ne trouve plus les images - Je sais pas si je suis très clair mais en gros j'ai un fichier index.php avec des images et dedans je fais des include. De ce fait ou que je sois dans mon site les images de mon index sont les meme mais puisque je crée des repertoires fictifs je me demande si cela lui pose problème ?

Comment puis-je faire car dans mes include je ne gere en aucun cas mon index ?

En fait mon css est prit mais maintenant les images qui ne sont pas dans le include posent problèmes.. :evil:

Merci a tous
 
WRInaute accro
tu as essayé <base href="http://www.example.com/"> comme suggéré par jeroen ?

A mon avis c'est ça (en tout cas j'avais fait la même chose face à un problème identique).
 
Nouveau WRInaute
Désolé pour le petit laps de temps. Merci en tt cas pour vos réponses.
J'ai bien compris votre balise <base> et j'ai testé mais ca ne donne rien.
Est-ce le fait de travailler en local ?

-car si je dois tester en ligne je ne peux que le faire dans la nuit pour les visiteurs-

Et puis mes liens dans mes include sont corrects. Le problème c'est qu'il ne prend pas les images du fichier parent par contre il prend bien le css. Alors je pensais que la balise <base> marcherais aussi mais non. J'y fais peu etre mal reference. J'ai essayé en mettant l'url de mon site en local et j'ai essayé en mettant url de mon fichier index....
 
Discussions similaires
Haut