I'm building a website (in Joomla 4, if that's relevant), and I'm trying to use .htaccess to redirect URLs like this:
index.php/characters
... to URLs like this:
index.php/characters?reset=true
... but leave URLs like this alone:
index.php/characters?search=fred
I used https://htaccess.madewithlove.com/ to test the following rules, and the simulation looked like it would achieve exactly what I want:
RewriteCond %{QUERY_STRING} ^(?!search)
RewriteRule index.php/characters /index.php/characters?reset=true [L,R,QSA]
But this gives me endless redirects which look like this:
index.php/characters?reset=true&reset=true&reset=true&reset=true&reset=true&reset=true&reset=true&reset=true (etc)
What am I doing wrong here?
CodePudding user response:
You may use a redirect rule like this:
RewriteCond %{QUERY_STRING} !(^|&)(search|reset)= [NC]
RewriteRule ^index\.php/characters/?$ /$0?reset=true [L,R,QSA]
Negative condition RewriteCond %{QUERY_STRING} !(^|&)(search|reset)=
will skip the rule if query string has a parameter that starts with search=
or reset=
.