Bonjour,

Sur mon site j'ai quelques pages principales (une dizaine) qui correspondent à des fichiers PHP sur le serveur.

J'ai mis en place l'URL rewriting pour ces quelques pages, de manière à ce qu'on y accède via des URL de ce type :
http://domaine/voiture
http://domaine/machin-truc

Voici la structure des fichiers sur le serveur :
  • .htaccess
  • wp-index.php
  • index.php
  • pages
    • voiture.php
    • camion.php
  • images
    • photo.jpg
    • schema.png


Et le contenu de mon .htaccess :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
RewriteEngine on
RewriteBase /
 
# Rewrite des URL style /voiture-rapide vers le fichier PHP dédié
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9_-]+)$ pages/$1.php [L]
Maintenant, je voudrais y ajouter un catch all, c'est à dire que toutes les URL qui correspondent à mon pattern [a-zA-Z0-9_-]+ vont être réécrites vers wp-index.php si et seulement si le fichier PHP correspondant à la requête n'existe pas dans /pages/.

Au final, ça devrait faire ça :


Pour ça j'ai ajouté une nouvelle règle à la fin de mon .htaccess :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
# Rewrite du reste des URL vers wp-index.php (catch all)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wp-index.php [L]
Ça fonctionne mais j'ai un doute, parfois mon navigateur (Firefox) indique un message d'erreur style redirections infinies...

Je souhaiterais avoir votre avis, est-ce qu'il y a une meilleure solution ?

Merci