Если вы используете .htaccess, то с высокой вероятностью у вас нет доступа к конфигурации веб-сервера (Апача, либо его замены).
Также у вас, скорее всего, поддомен и домен имеют разные "домашние папки" - например,
public_html\domain1.com
и
public_html\subdomain.domain1.com
, если вы пользуетесь cPanel. Соответственно, при обращении к поддомену берутся файлы из его домашней директории, и одним .htaccess не обойтись - они берутся из разных папок.
Я вижу два варианта:
- Задать и домену и поддомену качестве домашней (корневой) одну и ту же папку. Тогда их будет обслуживать один и тот же .htaccess. Но и все остальные файлы будут также одинаковыми.
- Положить .htaccess на один уровень выше домашних папок домена и поддомена. Для примера выше это будет
public_html
. Однако, этот вариант надо тестировать отдельно. На разных панелях (а может и на разных серверах) это работает по-разному. Кроме того, чтобы общий .htaccess работал, в обеих корневых папках не должно быть своего .htaccess. Иначе будет применяться последний.
Htaccess для пункта 1 будет примерно таким (ваше исключение с file.php нужно сохранить):
RewriteCond %{HTTP_HOST} ^(.*\.)?domain1\.ru$
RewriteRule ^.*$ https://domain2.ru/$0 [L,R=301]