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

関連情報