[RESOLU] erreur avec l'url rewriting.

erreur avec l'url rewriting. [RESOLU] - Divers - Programmation

Marsh Posté le 07-02-2018 à 23:00:22    

Bonsoir à tous !
 
J'ai un problème avec mon url rewriting que je ne parviens pas à résoudre...
 

Code :
  1. RewriteEngine on
  2. RewriteRule ^([a-z\-]+)$ /index.php?p=$1 [L]
  3. RewriteRule ^/projet/([0-9\-]+)/([a-z\-]+)$ /index.php?p=projet&idapp=$1&app=$2 [L]


 
La première règle me permet d'avoir une url propre et elle fonctionne.
La deuxième règle ne fonctionne pas. Ce que je veux faire, c'est montrer un projet défini par idapp et app, mais je ne parviens pas à réécrire proprement l'URL. Je tombe toujours sur une page 404.
 
Je vous remercie pour votre aide !


Message édité par Luc-A le 09-02-2018 à 10:57:04
Reply

Marsh Posté le 07-02-2018 à 23:00:22   

Reply

Marsh Posté le 08-02-2018 à 15:24:58    

Lu,
 
dans un .htaccess (ou bloc <Directory> ), étant donné qu'Apache tronque automatiquement le chemin testé par RewriteRule, celui-ci ne commencera JAMAIS par un slash. ^/ ne matchera donc jamais. Il faut supprimer ce slash de tête. Au pire, si vous voulez vraiment écrire des règles portables (par rapport au fait que l'on soit dans un contexte de répertoire ou non), il faudrait le rendre facultatif via ^/?
 
Si ça ne fonctionne toujours pas, penses aussi à nous donner l'URL (au moins le chemin) que tu cherches à faire matcher.
 
Extraits de la doc :

Citation :

Dans un contexte de répertoire (sections Directory et fichiers .htaccess), le Modèle est comparé avec une partie de chemin ; par exemple une requête pour "/app1/index.html" entraînera une comparaison avec "app1/index.html" ou "index.html" selon l'endroit où la directive RewriteRule est définie.
 
Le chemin où la règle est défini est supprimé du chemin correspondant du système de fichiers avant comparaison (jusqu'au slash final compris). En conséquence de cette suppression, les règles définies dans ce contexte n'effectuent des comparaisons qu'avec la portion du chemin du système de fichiers "en dessous" de l'endroit où la règle est définie.


et

Citation :

Le prefixe supprimé se termine toujours par un slash, ce qui signifie que la comparaison s'effectue avec une chaîne qui ne comporte jamais de slash de début. Ainsi, un modèle contenant ^/ ne correspondra jamais dans un contexte de répertoire.


Message édité par pluj le 08-02-2018 à 15:28:09
Reply

Marsh Posté le 09-02-2018 à 10:55:31    

Bonjour !
 
Merci beaucoup !!!
 
Problème résolu !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed