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]
Обязательно очистите кеш браузера перед тестированием.