Mod_rewrite (htaccess) QSA и удаление символов из добавленной строки запроса

Я боролся с некоторыми перенаправлениями htaccess. Я просто потратил некоторое время на чтение и поиск и не смог найти решение, которое бы соответствовало моему сценарию.

Я нахожусь в процессе перенаправления 301 для старого сайта (ASP) на новый (Wordpress). На старых страницах есть запрос параметров, который мне нужно обработать, а также удалить строку 'http://', чтобы перенаправить на работу.

Пример URL (старый) для перенаправления выглядит следующим образом:

http://www.domain.org/index.asp?documentID=2410&utm_source=IT+Travel+Reminder&utm_medium=Informz%2FnetFORUM&utm_campaign=IT%2FTravel+Reminder%2FMonthly+Monthly+Travel+Reminder&zbrandid=4050&zidType=CH&zid=28841368&zsubscriberId=1036792259&zbdom=http://my.informz.net

перенаправлен на:

http://www.domain.org/permalink-2410/?qs=true&utm_source=IT+Travel+Reminder&utm_medium=Informz%2FnetFORUM&utm_campaign=IT%2FTravel+Reminder%2FMonthly+Monthly+Travel+Reminder&zbrandid=4050&zidType=CH&zid=28841368&zsubscriberId=1036792259&zbdom=my.informz.net

и.htaccess код для его перенаправления:

RewriteCond %{QUERY_STRING} ^documentid=2410(&.*)$ [NC]
RewriteRule ^index\.asp(.*):(.*)$  http://www.domain.org/permalink/?qs=true%1%2 [L,R=301,QSA]

но почему-то не работает, как я ожидал, когда

RewriteCond %{QUERY_STRING} ^documentid=2410(&.*)$ [NC]
RewriteRule ^index\.asp$ http://www.domain.org/permalink/?qs=true%1 [L,R=301,QSA]

отлично работает когда уберу http:// или же : из строки запроса.

Где я ошибся?

Спасибо!

1 ответ

Решение

Попробуйте это правило:

RewriteCond %{QUERY_STRING} ^documentid=(\d+)(&.+?)http://(.+)$ [NC]
RewriteRule ^index\.asp$ http://www.domain.org/permalink-%1/?qs=true%2%3 [L,R=302,NC,NE]

Обязательно очистите кеш браузера перед тестированием.

Другие вопросы по тегам