Je ces rewriterules qui fonctionnent bien:mod_rewrite: comment pointer vers un fichier différent mais conserver les variables de requête?
# 4 params
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/?$ index.php?app=$1&do=$2&what=$3&id=$4 [NC,L,QSA]
# 3 params
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/?$ index.php?app=$1&do=$2&what=$3 [NC,L,QSA]
# 2 params
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/?$ index.php?app=$1&do=$2 [NC,L,QSA]
# 1 param
RewriteRule ^([A-Za-z0-9-]+)/?$ index.php?app=$1 [NC,L,QSA]
Maintenant, je voudrais que si l'URL contient /api/
alors je voudrais pour pointer vers un fichier appelé public.api.php
mais encore les 4 requête vars en tant que paramètres. Je pourrais organiser cela en explicitant toutes les règles dans l'ordre dans lequel elles devraient être traitées, mais cela fait un assez long fichier .htaccess.
Mes questions est la suivante: est-il un moyen d'ajouter une sorte de règle conditionnelle qui vérifierait si /api/
est dans le uri demandé et selon ce point à index.php
ou public.api.php
sans répéter le traitement des quatre requêtes vars?
Pouvez-vous préciser? Je ne suis pas sûr de comprendre la logique que vous proposez. – pixeline
Il suffit de copier sur chaque paramètre de requête, tous correspondent dans un groupe, comme esquissé dans ce RewriteRule ci-dessus, qui n'est pas vraiment testé. – fforw
Votre expression rationnelle n'échappe pas au? ce qui signifie "n'importe quel caractère une fois" dans regexp-ish. – fforw