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

Связанный контент