Вы можете сделать это с помощью RewriteCond
:
RewriteEngine on
RewriteCond %{HTTP_HOST} !subdomain.domain.com
RewriteRule ^directory http://www.domain.com [R=301]
Хотя еще лучше, я бы порекомендовал создать еще один виртуальный хост с тем же корнем документа. Таким образом, в конфигурации вашего основного сервера у вас будет
<VirtualHost *:80>
# this is the existing virtual host for the www subdomain
ServerName www.domain.com
...
DocumentRoot /path/to/docroot
# Add this next section
<Directory /path/to/docroot/directory>
Options allow,deny
Deny from all
</Directory>
</VirtualHost>
<VirtualHost *:80>
# this is the existing vhost for the other subdomain
ServerName subdomain.domain.com
...
DocumentRoot /path/to/docroot
</VirtualHost>
Более эффективно, когда Apache не нужно разбирать файлы .htaccess
.