Я установил ваши правила на моем тестовом сервере, но не смог скопировать рекурсивное перенаправление. При этом вы должны изменить его так, чтобы он выглядел следующим образом:
RewriteCond %{HTTP_HOST} !^m([.].*)?\.example\.com$
RewriteCond %{HTTP_HOST} ^(.*)?\.example\.com$
RewriteRule (.*) http://m.%1.example.com/$1 [R,L]
Это, по крайней мере, решит проблему с отсутствующими поддоменами. (Вы пропустили точку после m, и группа захвата, представляющая субдомен: %1
)
Поскольку я не смог воспроизвести вторую половину проблемы, я не уверен, что может быть причиной. Если у вас есть какая-либо дополнительная информация, которая, по вашему мнению, может помочь, я готов еще раз попробовать.