valor da string de consulta de redirecionamento htaccess

valor da string de consulta de redirecionamento htaccess

preciso redirecionar

www.URL.it/directory_one/index.php?param_one=XXX&param_two=**YYY**

para

www.URL.it/newpage.php?param_three=**YYY**

Tentei tudo o que encontrei online, mas a única coisa que funciona é redirecionar directory_one/index.php para newpage.php sem parâmetros.

Eu tentei este .htaccess

RewriteCond %{HTTP_HOST} =www.URL.it/directory_one/index.php? [NC]
RewriteCond %{QUERY_STRING} ^(param_one=XXX&param_two=**YYY**)
RewriteRule ^$ http://www.URL.it/newpage.php?%1 [R=301,L]

só para ver se alguma coisa acontece, mas não funciona

Eu tentei também

RewriteCond %{REQUEST_URI} /directory_one/index\.php
RewriteCond %{QUERY_STRING} param_one=XXX&param_two=**YYY**
RewriteRule ^(.*)$ http://www.URL.it/test/index.php? [L,R=301]

mas nada aconteceu

Responder1

Certifique-se de ter AllowOverridedefinido o diretório .htaccessem que reside ou o Apache irá ignorá-lo.

Experimente isto:

RewriteCond %{QUERY_STRING} param_one=XXX
RewriteCond %{QUERY_STRING} param_two=([^&]+)
RewriteRule ^/directory_one/index\.php$ http://www.URL.it/newpage.php?param_three=%1 [L,R]

Se param_tworealmente for YYY, use isso, pois não há necessidade de usar referências anteriores:

RewriteCond %{QUERY_STRING} param_one=XXX
RewriteCond %{QUERY_STRING} param_two=YYY
RewriteRule ^/directory_one/index\.php$ http://www.URL.it/newpage.php?param_three=YYY [L,R]

Se nenhuma das opções acima funcionar, outra regra pode ter precedência ou você pode ter colocado as regras no lugar errado. Você deve depurar tudo com

RewriteLog /path/to/file.log
RewriteLogLevel 3

Responder2

RewriteCond %{QUERY_STRING} param_one=XXX
RewriteCond %{QUERY_STRING} param_two=.*YYY.*
rewriteRule (.*) www.URL.it/newpage.php?param_three=%{QUERY_STRING} param_two

informação relacionada