The best way is to use 301 redirects to remove all duplicate content. However, if you do a blanket
301 redirect from example.net to example.com you're telling the search engines that you are no longer going to use example.net for anything because you are permanently redirecting all content to the .com domain.
If you want to maintain the
.net domain for the content that is not duplicated, then you should use single 301 redirects for all content which belongs on the .com domain.
One method, if you're using Apache is to perform these at the
.htaccess level (so web designers and developers can edit them).
An example directive found in the example.net site would then look like this:
RewriteRule ^(folder/topic-1.*) http://www.example.com/$1 [R=301,L]
RewriteRule ^old-folder/(topic-2.*) http://www.example.com/new-folder/$1 [R=301,L]
If you're not concerned with who has access to what, then you can use RewriteMaps as well. They need to be entered directly into the Virtual Host declarations in the configuration files for the server, but the map can be editable at a level accessible to users with
SFTP is better) access (outside of the document root).
If you're using dynamic files in a language like PHP, then you can replace the file people are expecting with a 301 redirect in the code:
header("HTTP/1.1 301 Moved Permanently");
Redirects in other languages can be found here.