Besoin d'aide pour mes regles de réécriture...

WRInaute passionné
Original comme titre, vous ne trouvez pas?

Bon alors ce coup ci, je m'attaque au rewritage (si si, c'est comme ca que l'on dit, je vous assure :lol:)

Alors j'ai un url du type:
-http://www.exemple.com/annonces-gratuites/index.php?cat=annonces-rencontres

Que je veux transformer en:
-http://www.exemple.com/annonces-gratuites/annonces-rencontres.html

Pour cela, je fais:
Code:
RewriteRule ^annonces-gratuites/(.*)\.html /annonces-gratuites/index.php?cat=$1

et cela fonctionne.

Ensuite, j'ai des url du type:
-http://www.exemple.com/annonces-gratuites/annonces.php?cat=annonces-rencontres&scat=annonces-rencontre-homme

Que je veux transformer en
-http://www.exemple.com/annonces-gratuites/annonces-rencontres-annonces-rencontre-homme.html (au mieux)
Si c'est pas possible:
-http://www.exemple.com/annonces-gratuites/annonces-rencontre-homme.html
Et c'est la que sa coince; Voici ma regle dans mon htaccess:

Code:
RewriteRule ^annonces-gratuites/(.*)-(.*)\.html /annonces-gratuites/annonces.php?cat=$1&scat=$2

Et cela ne fonctionne pas, il continu a prendre la page index.php alors que je veux qu'il me prenne la page annonces.php
 
WRInaute occasionnel
zimounet a dit:
Ensuite, j'ai des url du type:
-http://www.exemple.com/annonces-gratuites/annonces.php?cat=annonces-rencontres&scat=annonces-rencontre-homme

Que je veux transformer en
-http://www.exemple.com/annonces-gratuites/annonces-rencontres-annonces-rencontre-homme.html (au mieux)
Si c'est pas possible:
-http://www.exemple.com/annonces-gratuites/annonces-rencontre-homme.html
[/code]

Vois le problème dans l'autre sens. Il va falloir dire à mod_rewrite que tu veux découper annonces-rencontres-annonces-rencontre-homme.html au niveau du tiret. Tu te doutes que le pov mod_rewrite va avoir du mal à savoir duquel tu parles.

Tu ne veux pas plutot faire ainsi :
-http://www.exemple.com/annonces-gratuites/annonces-rencontres/annonces-rencontre-homme.htm ?

Ce qui donnerait pour tes deux cas :
Code:
RewriteRule ^annonces-gratuites/([^/]+)\.html /annonces-gratuites/annonces.php?cat=$1 [L]
RewriteRule ^annonces-gratuites/([^/]+)/([^/]+)\.html /annonces-gratuites/annonces.php?cat=$1&scat=$2 [L]
 
WRInaute passionné
Je suppose que tu parlais de mettre index.php dans la premiere des deux regles que tu m'a donné:

Code:
RewriteRule ^annonces-gratuites/([^/]+)\.html /annonces-gratuites/index.php?cat=$1 [L]
RewriteRule ^annonces-gratuites/([^/]+)/([^/]+)\.html /annonces-gratuites/annonces.php?cat=$1&scat=$2 [L]

Cela fonction en effet, sauf pour annonces.php, ou il me perd ma feuille de style qui est définit sur les deux pages (index.php et annonces.php) comme tel:

<link rel="stylesheet" type="text/css" href="../style/style.css" media="screen" />

J'en ai marre, y a toujours qqchose qui foire!! :roll:
 
WRInaute occasionnel
zimounet a dit:
Je suppose que tu parlais de mettre index.php dans la premiere des deux regles que tu m'a donné

Effectivement, pas fait attention que le .php n'avait pas le même nom dans tes deux exemples :)

zimounet a dit:
Cela fonction en effet, sauf pour annonces.php, ou il me perd ma feuille de style qui est définit sur les deux pages (index.php et annonces.php) comme tel:

<link rel="stylesheet" type="text/css" href="../style/style.css" media="screen" />

Pourquoi ne pas indiquer href="/style/style.css" au lieu de href="../style/style.css", comme ça plus de pb ?
 
WRInaute passionné
Attention aux « répertoires virtuels »

Dans les exemples qui précèdent, nous avons effectué des réécritures qui n’impactaient pas l’arborescence apparente de vos pages, pour simplifier les exemples.

Si, au lieu de réécrire, en reprenant l’exemple précédent :
RewriteRule ^article-([0-9]+)-([0-9]+)\.html$ article.php?numero=$1&page=$2 [L]
nous utilisons
RewriteRule ^article/([0-9]+)/([0-9]+)\.html$ article.php?numero=$1&page=$2 [L]

L’URL apparente aurait la forme /article/8126/2.html au lieu de /article-8126-2.html
Dans ce cas, le navigateur « estime » que la page se trouve dans un répertoire /article/8126 qui n’a pas d’existence réelle sur votre site. Toute tentative de résolution de liens relatifs se fera donc à partir de ce répertoire inexistant et sera vouée à l’échec.

Pour éviter cela, deux solutions se présentent :

- Utiliser des liens absolus, ou mieux...
- Faire usage de la balise <base href="http://www.votresite.tld/repertoire/" > à mettre dans l'entête de votre page, entre <head> et </head>

Sur l'article de webmaster, donc j'ai compris, et ce devrais etre reglé!

Merci @ toi Chezthierry!!!! Merci beaucoup meme!
 
WRInaute passionné
Par contre, j'ai une question qui subsiste, a part le slash / , je peux le séparer avec quoi?

J'ai vu que le tiret simple ne fonctionnais pas, puisque le mod rewrit s'embrouillais avec les autres séparateurs!
 
WRInaute occasionnel
Pourtant ça devrait marcher ça :
Code:
RewriteRule ^annonces-gratuites/([^,]+)\.html /annonces-gratuites/index.php?cat=$1 [L]
RewriteRule ^annonces-gratuites/([^,]+),([^,]+)\.html /annonces-gratuites/annonces.php?cat=$1&scat=$2 [L]
 
WRInaute passionné
Avec les slash, sa me convient bien :)

Sinon je suis en train de rewriter mon annuaire de blog, et la encore probleme:

Mes url sont de ce type -http://www.exemple.com/annu*ire-bl*gs/cat.php?cat=1

Et j'aimerais qu'elle soit de ce type
-http://www.exemple.com/annu*ire-bl*gs/cinema-1.html

Pour cela, j'ai fait:
Code:
RewriteRule ^annuaire-blogs/([^-]+)-([0-9]*)\.html /annuaire-blogs/cat.php?cat=$1 [L]

hors ma variable d'url cat != 1 (toujours ==0)

Comment faire? Que n'ai-je encore pas saisie?
 
Discussions similaires
Haut