Salve a tutti! spero possiate aiutarmi data la mia scarsa preparazione in materia.

Sto realizzando il mio sito senza utilizzare alcun CMS e mi trovo di fronte al problema della configurazione degli urls, gestione degli errori e redirect.
Sono riuscito ad "arabattare" una sorta di file htaccess con un uso massiccio di ctrl+c ma non ho capito moltissimo la pratica.

Io vorrei un .htaccess che:
- mi reindirizzi dal dominio www a quello senza www
- riscriva gli urls in modo molto semplice (esempio: /about/ -> /index.php?id=about)
- riscriva gli urls anche in sottocartelle utilizzando index diversi (esempio: /m/about/ -> /m/index.php?id=about)
- reindirizzi gli errori comuni ad una pagina specificando il codice dell'errore( error.php?codiceerrore=404)
- mi permetta di impostare redirect su alcuni percorsi specifici (esempio: /blog/ -> http://mioblog.com)

Il mio risultato è questo:

codice:
<Files ~ "^.(htaccess|htpasswd)$">
deny from all
</Files>
Options Indexes
ErrorDocument 400 /error.php
ErrorDocument 401 /error.php
ErrorDocument 402 /error.php
ErrorDocument 403 /error.php?id=403
ErrorDocument 404 /error.php?id=404
ErrorDocument 405 /error.php
ErrorDocument 406 /error.php
ErrorDocument 407 /error.php
ErrorDocument 408 /error.php
ErrorDocument 409 /error.php
ErrorDocument 410 /error.php
ErrorDocument 411 /error.php
ErrorDocument 412 /error.php
ErrorDocument 413 /error.php
ErrorDocument 414 /error.php
ErrorDocument 500 /error.php?id=500
ErrorDocument 501 /error.php
ErrorDocument 502 /error.php
ErrorDocument 503 /error.php
ErrorDocument 504 /error.php
ErrorDocument 505 /error.php

DirectoryIndex index.html index.xhtml index.htm index.php    

order deny,allow

<IfModule mod_rewrite.c>
	Options +FollowSymlinks
	RewriteEngine on
	
	RewriteCond %{HTTP_HOST} ^www\.(.*) [NC] # funziona
	RewriteRule ^(.*)$ http://%1/$1 [R=301,NC,L]
	
	RewriteRule ^blog$ http://xy.z [R=301,NC] # non funziona

	RewriteBase /
	RewriteCond %{REQUEST_FILENAME} !-f # a cosa serve?!
	RewriteCond %{REQUEST_FILENAME} !-d # a cosa serve?!
	RewriteRule ([^/]+) /index.php?id=$1 [L]
	
	RewriteBase /m/ # non funziona
	RewriteCond %{REQUEST_FILENAME} !-f
	RewriteCond %{REQUEST_FILENAME} !-d
	RewriteRule ([^/]+) /m/index.php?id=$1 [L]
	
	RewriteBase /async/ # non funziona
	RewriteCond %{REQUEST_FILENAME} !-f
	RewriteCond %{REQUEST_FILENAME} !-d
	RewriteRule ([^/]+) /async/index.php?id=$1 [L]
</IfModule>
Grazie