Хорошо, еще одна головная боль, и я наконец там.Я просто публикую это здесь на случай, если я
- пропустил что-то
- , может быть, это может помочь кому-то еще в подобной ситуации
.htaccess rule
# Rewrite Typo3 links with multilanguage Param "L"
RewriteCond %{QUERY_STRING} (.*)(^L=[a-zA-Z0-9]+&?|^&L=[a-zA-Z0-9]+&|&L=[a-zA-Z0-9]+)(&?.*)
RewriteRule (.*) %{REQUEST_URI}?%1%3 [L,R=301]
Объяснение
Правило пытается охватить все следующие случаи
- domain.com / login.html? P1 = 1 & p2 = 2 & L = abc & P3 = 3
- domain.com / login.html? P1 = 1 & p2 = 2 & L = def
- domain.com / login.html? & L = eh1
- domain.com / login.html?& L = asdfasd & p1 = 1 & p2 = 2
- domain.com / login.html? L = 0
- domain.com / login.html? L = 1 & p1 = 1 & p2 = 2 & P3 = 3
Насколько мне известно, регулярное выражение работает следующим образом:
- (. *) проверяет, есть ли что-либо перед следующей опцией L-параметра
- Вторая группа () -pair содержит 3 варианта / случая того, как L-параметр может присутствовать в строке запроса
- третий (.*) просто охватывает все, что может следовать за L-параметром
Поэтомуна замену нужно только %{REQUEST_URI}?%1%3
.Это исключит вторую группу () с различными параметрами L-параметра.
Конечный результат
Строка запроса URL будет удалена из L-параметра,но оставь все остальное.
Есть комментарии?Не стесняйтесь голосовать, если это также ценно для вас.
Спасибо всем, кто помог мне найти правильное решение!