Необходимо добавить условие, чтобы разбить бесконечный цикл.
Обратите внимание, что этот цикл будет возникать только в том случае, если вы действительно хотите сохранить имя хоста без изменений, поэтому перезапишите внутри одного и того же хоста, но по-прежнему выполняйте внешнее перенаправление, как вы предлагаете. Это несколько удивительно, но, конечно, возможно:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^subdomain\.example\.com$ [NC]
RewriteCond %{REQUEST_URI} ^/subdomain/ [NC]
RewriteRule ^(.*)$ subdomain/$1 [L,R=301,QSA]
Это реализует внешнего переназначения, дополнительное условие необходимо для предотвращения цикла переадресации:
https://subdomain.example.com/foo>https://subdomain.example.com/subdomain/foo
тот же цикл не возникает, если вы переписываете другое имя хоста:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^subdomain\.example\.com$ [NC]
RewriteRule ^(.*)$ https://www.example.com/subdomain/$1 [L,R=301,QSA]
Это реализует внешнего перенаправление, нет дополнительного условия не требуется, так как существующая уже предотвращает петлю переадресации:
https://subdomain.example.com/foo>https://www.example.com/subdomain/foo
Более часто видела подход заключается только в том, чтобы переписать внутренне, поэтому без фактического изменения URL-адреса, видимого в браузер:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^subdomain\.example\.com$ [NC]
RewriteCond %{REQUEST_URI} ^/subdomain/ [NC]
RewriteRule ^(.*)$ subdomain/$1 [L,QSA]
Это реализует внутреннего переназначения, поэтому виден URL в клиенте остается неизменным:
https://subdomain.example.com/foo>/поддомен/Foo
Конечно, вам нужно добавить условие остановки цикла. – arkascha