У меня есть список из нескольких сотен URL-адресов переадресации/перезаписи внутри перезаписи. Большинство URL содержат строки запросов, которые соответствуют определенной записи на карте перезаписи. Я нашел this question о том, как передать строку запроса на карту перезаписи. Я получил эту работу отлично, но теперь проблема заключается в том, что существующая строка запроса добавляется в конец перезаписанного URL-адреса. Например:Удалить строку запроса с конца URL-адреса после прохождения через Rewrite Map
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 после переписывания?
EDIT
Я был в состоянии фактически получить эту работу с помощью этого:
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]
Однако я не уверен, что если кто-то знает лучший способ добиться того, чего я делаю? Я думаю, что это может сломаться, если мне когда-либо придется перенаправить URL-адрес, содержащий строку запроса, на другой URL-адрес, содержащий строку запроса.