Bonjour,

J'ai un soucis avec un CMS que je suis entrain de faire, il y a un système de news et l'url des news est sous la forme

forgecms.dev/news?t=bienvenue-sur-forgecms

Et je voudrai que se soit sous la forme

forgecms.dev/news/bienvenue-sur-forgecms

J'ai essayer ce code dans le .htaccess

RewriteRule ^news/(.*)$ news?t=$1 [L]

Mais je n'y arrive pas, si vous avez une solution a me proposer,
Merci d'avance,
Cordialement.

14 réponses


Couss
Réponse acceptée

C'est normal tu essai d'accèder au fichier news (sans le .php)
essai ceci :

RewriteRule ^news/(.*)$ news.php?t=$1 [L]

A placer avant ta ligne supprimant les .php car ton flag [L] indique que le moteur d'URL rewriting doit arrêter sa recherche ici si l'URL correspond à l'expression régulière.

Vallyan
Réponse acceptée

Oui enfin c'est pas top non plus: une url du type http://domaine.fr/newstiti matcherait comme http://domaine.fr/news/titi ...
Au pire deux rules du genre:

RewriteRule ^news/(.*)$ news.php?t=$1 [L]
RewriteRule ^news$ news.php?t= [L]

pourrait marcher et ne matcherait pas newstiti. Attention: l'ordre des règles est a respecter !

Vallyan
Réponse acceptée

hé hé ... qui c'est le meilleur ?

RewriteRule ^news$|news/$|news/(.*)$ news.php?t=$1 [QSA,L]

:P

Essaie ceci

RewriteRule ^news/(.*)$ news?t=$1 [QSA]

Bonjour,

On peut avoir ton htaccess complet ?

Cordialement

DareK
Auteur

Le début du code est fait pour enlever les .php dans les URL et aussi la ligne pour l'erreur 404.

Options +FollowSymLinks
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^(.*)$ $1.php [L]

RewriteRule ^news/(.*)$ news?t=$1 [L]

ErrorDocument 404 /404.php
DareK
Auteur

Merci Couss pour ta réponce qui fonctionne mais quand je veut mettre l'url http://domaine.fr/news j'ai une erreur 404, pour que la page news marche il faut que je fasse http://domaine.fr/news/
Merci

Pour rendre le / optionnel:

RewriteRule ^news/?(.*)$ news.php?t=$1 [L]

effectivement j'avais pas pensais a cette éventualitée
Merci Vallyan

A toutes fins utiles, ce genre de petit outil est très pratique pour les tests: http://martinmelin.se/rewrite-rule-tester/

@ Vallyan : ce que l'on oublie souvent c'est que l'url rewriting est juste une utilisation des regex, il suffit de s'avoir ecrire la regex pour que le fonctionnement soit operationnel sur l'url réécrite ;)

@Bahamut45: "On" ne l'oublie pas ;) ... tu saurais écrire cette règle en une ligne ?

@ Vallyan : GG je m'incline fasse à ta dexterité sur les regex :p

DareK
Auteur

Merci a vous tous pour vos réponce qui mon aidé pour mon projet.