リライトマップ内に数百のURLリダイレクト/リライトのリストがあります。ほとんどのURLには、リライトマップの特定のエントリに一致するクエリ文字列が含まれています。私はthis questionがクエリ文字列を書き換えマップに渡す方法を発見しました。これはうまくいきましたが、問題は現在のクエリ文字列が書き換えられたURLの末尾に追加されることです。たとえば、次のようにリライトマップを通過した後にURLの最後からクエリ文字列を削除します
Expected Rewrite:
/subdir/dir.cfm?categoryID=123 -> https://example.com/subdir/endurl
Actual Rewrite:
https://example.com/subdir/endurl?categoryID=123
Expected Rewrite
/subdir/dir.cfm?videoID=3422424-131FDDFD-234 -> https://example.com/subdir/awesome/stuff
Actual Rewrite:
https://example.com/subdir/awesome/stuff?videoID=3422424-131FDDFD-234
これは私が持っている書き換えルールです:
RewriteEngine on
RewriteMap redirects dbm=sdbm:C:\Apache24\conf\redirects.sdbm
RewriteCond ${redirects:$1} !=""
RewriteRule ^(.*\.(cfm|cfml)) ${redirects:$1?%{QUERY_STRING}} [NC,R=301,L]
どのように書き換えた後、URLに追加クエリ文字列を削除することができますか?私は、誰かが私がやっている何を達成するためのより良い方法を知っているかどうかわからないのですが
RewriteMap redirects dbm=sdbm:C:\Apache24\conf\redirects.sdbm
RewriteCond ${redirects:$1} !=""
RewriteRule ^(.*\.(cfm|cfml)) ${redirects:$1?%{QUERY_STRING}} [NC,C]
RewriteRule (.*) $1? [L,R=301]
:
EDIT
私は実際にこれがこれを使用して動作させることができましたか?私は、これは、クエリ文字列を含む別のURLにクエリ文字列を含むURLにリダイレクトする必要がある場合、これが壊れるかもしれないと思っています。