Since you want to add something to the end of every post/page rewrite rule, you probably can just add a rewrite endpoint. These are regexes of the form /[endpoint_name](/[optional_extra_stuff])? that are appended to the already generated rules for pages, posts, archives, ...
You define on which structures you want to add them by setting the endpoint mask. This is a bitmask, so you can combine different groups using the | operator, like this: EP_PERMALINK | EP_PAGES will match for every page and every permalink (full post and date-based archives). The default list of endpoints can be found at the top of wp-includes/rewrite.php.
The following code will add /remove(/(.*))? to the existing rewrite rules for pages, posts and date-based archives (for some reason they are generated twice, once in EP_PERMALINK and once in EP_DATE). remove will also be available as a public query var, so you can do $wp_query->get( 'remove' ) to get the value (if set) of the [optional_extra_stuff] in the URL.
add_filter( 'init', 'wpse2614_init' );
function wpse2614_init()
{
add_rewrite_endpoint( 'remove', EP_PERMALINK | EP_PAGES );
}
/page/remove/54and you want the 54 to be accessible in your theme using$_GET['remove']on the page normally loaded by the/page/URL? – MikeSchinkel♦ Oct 6 '10 at 7:30?remove=346, for example. You're spot on, what I need is the URL to appear clean (remove/346) but for$_GET['remove']to be accessible within the page template. Does that help? Thank you for the response! – Gavin Oct 6 '10 at 16:40