htaccess mod_rewrite – Trailing Slash et boucle de redirections

Voici mon code htaccess:

  RewriteEngine On
 RewriteRule ^ s /(.*)/(.*) /index.php?search=$1&category=$2 [L, QSA]

 RewriteCond% {QUERY_STRING} ^ recherche = ([A-Za-z0-9 \ +] +) $
 RewriteRule ^ (. *) $ / S /% 1 /?  [R = 301, L]

 RewriteCond% {QUERY_STRING} ^ recherche = ([A-Za-z0-9 \ +] +) & category = ([A-Za-z0-9 \ +] +) $
 RewriteRule ^ (. *) $ / S /% 1 /% 2 /?  [R = 301, L] 

Je dois faire une règle de réécriture comme celle-ci:

  http://mywebsite.com/s/query+term => http://mywebsite.com/?search=query+term

 OU s'il y a une catégorie

 http://www.mywebsite.com/s/query+term/Category => http://mywebsite.com/?search=query+term&category=Category 

Je dois également redirect toutes les anciennes URL vers la nouvelle.

Avec cette règle, tout ce que je peux obtenir, c’est de joindre le terme de recherche et le nom de la catégorie. En un mot, c’est comme si j’avais toujours:
http://mywebsite.com/?search=query+term/Category
Si je supprime toutes les conditions (RewriteCond), ne laissant que la règle de réécriture avec l’ajout d’une barre oblique:

  RewriteEngine On
 RewriteRule ^ s /(.*)/(.*)/ /index.php?search=$1&category=$2 [L, QSA] 

Atteindre l’url de mon intérêt de manière directe, tout fonctionne. Mais je n’aurai pas la redirection ..

J’ai donc essayé de définir une règle comme celle-ci:

  RewriteEngine On
 RewriteRule ^ s /(.*)/(.*)/ /index.php?search=$1&category=$2 [L, QSA]

 RewriteCond% {QUERY_STRING} ^ recherche = ([A-Za-z0-9 \ +] +) $
 RewriteRule ^ (. *) $ / S /% 1 /?  [R = 301, L]

 RewriteCond% {QUERY_STRING} ^ recherche = ([A-Za-z0-9 \ +] +) & category = ([A-Za-z0-9 \ +] +) $
 RewriteRule ^ (. *) $ / S /% 1 /% 2 /?  [R = 301, L] 

Mais avec cette règle, je reçois juste une boucle de redirections.

Vous pouvez utiliser les règles suivantes:

 RewriteEngine on #1--Redirect from "?search=foobar&cat=cat" to "/s/foobar/cat" --# RewriteCond %{THE_REQUEST} /\?search=([^&]+)&cat=([^\s]+) [NC] RewriteRule ^ /s/%1/%/%2? [NC,L,R] #2--Redirect from "/?search=foobar" to "/s/foobar" --# RewriteCond %{THE_REQUEST} /\?search=([^/\s]+) [NC] RewriteRule ^ /s/%1? [NC,L,R] #1--Rewrite "s/foobar/cat" to "/?search=foobar&cat=cat"--# RewriteRule ^s/([^/]+)/([^/]+)/?$ /?search=$1&$category=$2 [NC,L] #2--Rewrite "s/foobar" to "/?search=foobar"--# RewriteRule ^s/([^/]+)/?$ /?search=$1 [NC,L]