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

相關內容