Réécrire pour une chaîne de requête vide

Je mets en place une mise en cache sur l’un de mes sites et je n’arrive pas à trouver s’il existe un moyen d’append une condition avec mod_rewrite à appliquer uniquement si la chaîne de requête d’une requête est vide.

Par exemple, j’aimerais savoir si je peux avoir une demande sans chaîne de requête comme

http://www.example.com/ 

charger la page à

 http://www.example.com/index.home.html 

Mais toute demande avec une chaîne de requête, telle que

 http://www.example.com/?id=32 

pour charger normalement et ne pas être affecté par la réécriture.

Qu’est-ce que je rate?

Je l’ai compris. Cela semble bien faire l’affaire:

 RewriteCond %{QUERY_STRING} ^$ RewriteRule ^/$ /index.home.html 

Bien sûr, s’il y a une meilleure façon, j’adorerais l’entendre.

Je connais ceux-là assez vieux, mais une meilleure alternative est:

 RewriteCond %{QUERY_STRING} -n RewriteRule ^/$ /index.home.html 

Pour correspondre à QuerySsortingng vide, nous utilisons ^ $ dans notre modèle de condition. La règle suivante redirige /file.html vers /file2.html mais ne parvient pas à redirect /file.html?queryssortingng en raison de la condition.

 RewriteEngine on RewriteCond %{QUERY_STRING} ^$ RewriteRule ^/?file.html$ /file2.html? [L,R] 

Un point d’interrogation vide à la fin de la règle est important car il supprime l’ancienne chaîne de requête, sinon l’URL redirigé ressemblera à /file2.html?queryssortingng .

Ou alternativement: RewriteEngine on

 RewriteCond %{QUERY_STRING} ^$ RewriteRule ^/?file.html$ /file2.html [L,R,QSD] 

L’indicateur QSD ne conserve pas la chaîne de requête s’il en existe une.