Вот та часть которая из вашего тз понятна
RewriteCond %{QUERY_STRING} (?:^|&)id\=(.+)(?:$|&)
RewriteRule ^cat/название/dir/1\.php$ /cat/название? [L,R=301]
Теперь по передаче GET распшиите что вы имели в виду, как по вашему можно передать GET но не GET ?
за вот такие художества должен отвечать ваш движок а не новый редирект.
Какая у вас CMS
покажите весь htaccess
и более детально распишите тз