the following seems to work for the first and second case
RewriteEngine on
RewriteCond %{QUERY_STRING} edit=(.*)
RewriteRule (.*)/ $1/edit/%1? [NE,L]
RewriteCond %{QUERY_STRING} updated=true
RewriteRule (.*)/ $1/updated? [NE,L]
As I stated in the comment above, # anchors are never sent to the server.
Also my solutions are roughtly tested in this sandbox, so take your time to verify they really work for you.
reference: apache wiki
Update:
I tested on a real box, it kinda works.
my test input was http://www.myawesomesite.com/awesome-post-001/?edit=awe001 (btw: I don't own that domain, I edited /etc/hosts to fake it)
here is my conf
RewriteEngine on
RewriteCond %{QUERY_STRING} edit=(.*)
RewriteRule (.*)/ $1/edit/%1/? [NE,L]
RewriteCond %{QUERY_STRING} updated=true
RewriteRule (.*)/ $1/updated/? [NE,L]
LogLevel alert rewrite:trace6
Here is an excerpt from my mod_rewrite trace log.
strip per-dir prefix: /var/www/html/awesome-post-001/ -> awesome-post-001/
applying pattern '(.*)/' to uri 'awesome-post-001/'
RewriteCond: input='edit=awe001' pattern='edit=(.*)' => matched
rewrite 'awesome-post-001/' -> 'awesome-post-001/edit/awe001/?'
split uri=awesome-post-001/edit/awe001/? -> uri=awesome-post-001/edit/awe001/, args=<none>
add per-dir prefix: awesome-post-001/edit/awe001/ -> /var/www/html/awesome-post-001/edit/awe001/
strip document_root prefix: /var/www/html/awesome-post-001/edit/awe001/ -> /awesome-post-001/edit/awe001/
internal redirect with /awesome-post-001/edit/awe001/ [INTERNAL REDIRECT]
strip per-dir prefix: /var/www/html/awesome-post-001/index.html -> awesome-post-001/index.html
applying pattern '(.*)/' to uri 'awesome-post-001/index.html'
RewriteCond: input='' pattern='edit=(.*)' => not-matched
strip per-dir prefix: /var/www/html/awesome-post-001/index.html -> awesome-post-001/index.html
[applying pattern '(.*)/' to uri 'awesome-post-001/index.html'
RewriteCond: input='' pattern='updated=true' => not-matched
pass through /var/www/html/awesome-post-001/index.html
strip per-dir prefix: /var/www/html/awesome-post-001/edit/awe001/ -> awesome-post-001/edit/awe001/
applying pattern '(.*)/' to uri 'awesome-post-001/edit/awe001/'
RewriteCond: input='' pattern='edit=(.*)' => not-matched
strip per-dir prefix: /var/www/html/awesome-post-001/edit/awe001/ -> awesome-post-001/edit/awe001/
applying pattern '(.*)/' to uri 'awesome-post-001/edit/awe001/'
RewriteCond: input='' pattern='updated=true' => not-matched
pass through /var/www/html/awesome-post-001/edit/awe001/
strip per-dir prefix: /var/www/html/awesome-post-001/edit/awe001/index.html -> awesome-post-001/edit/awe001/index.html
applying pattern '(.*)/' to uri 'awesome-post-001/edit/awe001/index.html'
RewriteCond: input='' pattern='edit=(.*)' => not-matched
strip per-dir prefix: /var/www/html/awesome-post-001/edit/awe001/index.html -> awesome-post-001/edit/awe001/index.html
applying pattern '(.*)/' to uri 'awesome-post-001/edit/awe001/index.html'
RewriteCond: input='' pattern='updated=true' => not-matched
pass through /var/www/html/awesome-post-001/edit/awe001/index.html
btw, are you sure you could not solve your problem using mod_alias? sometimes decoding which one is best is non-trivial, just asking.