htaccess 重定向查询字符串值

htaccess 重定向查询字符串值

我需要重定向

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

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

我尝试了在线找到的所有方法,但唯一有效的方法是将 directory_one/index.php 重定向到 newpage.php 而不使用参数。

我试过这个.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]

只是为了看看是否发生了一些事情,但没有起作用

我也试过了

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]

但什么也没发生

答案1

确保您已AllowOverride设置所在目录.htaccess,否则 Apache 将忽略它。

尝试这个:

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]

如果param_two确实如此YYY,请使用这个,因为不需要使用反向引用:

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]

如果以上方法均无效,则可能是另一条规则优先,或者您可能将规则放在了错误的位置。您应该使用以下方法调试整个过程:

RewriteLog /path/to/file.log
RewriteLogLevel 3

答案2

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

相关内容