url rewriting avec slash -> pas de css

Nouveau WRInaute
Bonsoir tout le monde !

Je viens de débuter dans l'url rewriting et je dois dire qu'au début j'avais vraiment du mal, mais grâce au différents post sur le forum, j'ai pu crée mon petit bout de code .htaccess mais j'ai un petit problème !

Donc en gros, ce que j'ai :
www.domaine.com/index.php?p=home et je veux avoir : www.domaine.com/home/
et
www.domaine.com/index.php?p=cat&nom=2-video et je veux avoir www.domaine.com/cat/2-video/

voici le code que j'ai :
Code:
RewriteEngine on
RewriteRule ^([a-z-]*)/([0-9a-z-]*)$   index.php?p=$1&nom=$2 [L]
RewriteRule ^([a-z-]*)$   index.php?p=$1 [L]

Le problème, c'est qu'avec ce code, je ne peux pas ajouter un slash (http://www.domaine.com/home/), sinon il m'affiche toute la page sans mes css, img et js.
Par contre, sans slash, ca fonctionne bien. Sauf pour le second cas (domaine.com/cat/2-video) où je perds mon css etc.

Que faire ?
 
WRInaute passionné
ajoute le / à la deuxième règle :
Code:
RewriteEngine on
RewriteRule ^([a-z-]*)/([0-9a-z-]*)$   index.php?p=$1&nom=$2 [L]
RewriteRule ^([a-z-]*)/$   index.php?p=$1 [L]
RewriteRule ^([a-z-]*)$   index.php?p=$1 [L]

edit : tu peux ajouter la troisième règle pour avoir avec ou sans / à la fin
 
Nouveau WRInaute
jOoL a dit:
si tu donnes l'url du site je pourrais regarder

Le site est malheureusement encore en local. Mais merci quand même :D

forty a dit:
ajoute le / à la deuxième règle :

Code:
RewriteEngine on
RewriteRule ^([a-z-]*)/([0-9a-z-]*)$   index.php?p=$1&nom=$2 [L]
RewriteRule ^([a-z-]*)/$   index.php?p=$1 [L]
RewriteRule ^([a-z-]*)$   index.php?p=$1 [L]

edit : tu peux ajouter la troisième règle pour avoir avec ou sans / à la fin

J'ai toujours les pages sans styles, js et img, mais j'ai changé l'url de leur lien en absolu et ça a l'air de fonctionner !

Mais j'ai quand même une petite question, le fait d'avoir la page une fois avec et une fois sans, ne risque pas de la dupliquer dans les moteurs ? Ou faudrait renvoyer les pages sans le slash à ceux avec le slash ?

Encore merci !
 
WRInaute passionné
il vaut mieux gérer une redirection en php pour éviter le duplicate ou ajouter :
Code:
<link rel="canonical" href="...">
 
WRInaute passionné
Tu as dû mettre tes URL de CSS en relatives
Code:
<link rel="stylesheet" type="text/css" href="css/css.css" />
Donc quand tu es dans un "dossier" rewrité, ça va chercher dans dossier/css/css.css
Donc 2 solutions, tu les mets avec une URL complète :
Code:
<link rel="stylesheet" type="text/css" href="http://localhost/css/css.css" />
Soit tu fais ça un peu plus "jolie"
Code:
<link rel="stylesheet" type="text/css" href="/css/css.css" />
 
Discussions similaires
Haut