在 htaccess 中重写一个术语的多次出现

Rewrite multiple occurence of a term in htaccess

我正在尝试将我的 URL 中的所有 & 转换为 & :

这是我的URL:https://test.com/index.php?option=com_media&task=file.upload&tmpl=component&820470bdbcec556c83a51cb33ca92922=kfp1tif94iuetenuab6hfi5mvd&690012fb504cea7eee8475c0963a8fc4=1&asset=image&format=json

这是我努力实现的目标:

https://test.com/index.php?option=com_media&task=file.upload&tmpl=component&820470bdbcec556c83a51cb33ca92922=kfp1tif94iuetenuab6hfi5mvd&690012fb504cea7eee8475c0963a8fc4=1&asset=image&format=json

到目前为止,我已经尝试了以下规则:

RewriteEngine On
RewriteCond %{QUERY_STRING} (.*)(&)(.*)
RewriteRule ^.*$ %{REQUEST_URI}?%1&%3 [N,L,R=301]

但它只是替换最后一个 &

非常感谢您的帮助

您可以使用这 2 条规则将所有 & 替换为 &。请注意,最后只会有一个重定向:

RewriteEngine On

# recursively replace & with &
RewriteCond %{QUERY_STRING} (.*)&(.*) [NC]
RewriteRule ^ %{REQUEST_URI}?%1&%2 [N,DPI,E=done:1]

# redirect in the end
RewriteCond %{ENV:done} =1
RewriteCond %{QUERY_STRING} !& [NC]
RewriteRule ^ %{REQUEST_URI} [R=301,NE,L]