Вы можете избавиться от "^" и "$" в Redirect
, для сравнения не требуется регулярное выражение. Это будет делать:
Redirect 301 / http://site.com/?lang=ua
EDIT:
Теперь, когда я думаю об этом, этот цикл будет бесконечным, потому что строка запроса не проверяется. Что вам нужно, это:
RewriteCond %{QUERY_STRING} !(^|&)lang=ua($|&)
RewriteRule ^$ http://site.com/?lang=ua [L,R]