.htaccess cambiar una ruta a una cadena de consulta

Tengo archivos en example.com/

contact.php recent.php videos.php watch.php 

example.com/page/ > /page/ no es una carpeta. pero quiero trabajar otras carpetas

contact.php (sin paginación)

 example.com/page/contact 

recent.php ( pagination > recent.php?page=2 )

 example.com/page/recent example.com/page/recent?page=2 

watch.php ( no pagination > watch.php?title=dtwig-name )

 example.com/page/watch/dtwig-name 

videos.php ( pagination with get name > videos.php?name=dtwig-name&page=2 )

 example.com/page/videos/dtwig-name example.com/page/videos/dtwig-name?page=2 

Aquí están mis códigos htaccess completos (example.com/.htaccess)

 RewriteEngine on RewriteBase / RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,NE,L] RewriteRule ^page/playlist$ /playlist.php [L] RewriteRule ^page/submit$ /submit.php [L] RewriteRule ^page/contact$ /contact.php [L] RewriteRule ^page/search$ /search.php [L] RewriteRule ^page/recent$ /recent.php [L] RewriteRule ^page/watch/([^/]+)? /watch.php?title=$1 RewriteRule ^page/videos/([^/]+)? /videos.php?name=$1 

Pero no funciona en /page/videos/dtwig-name?page=2 ¿cómo solucionarlo? tiene otro problema?

Puede combinar expresiones regulares y acortar sus reglas en su .htaccess con la bandera de QSA :

 RewriteEngine on RewriteBase / # add www in host name RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteRule ^(.*?)/?$ http://www.%{HTTP_HOST}/$1 [R=301,NE,L] # Unless directory, remove trailing slash RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.+)/$ /$1 [NE,R=301,L] RewriteRule ^page/(submit|contact|search|recent|playlist)/?$ $1.php [L,NC] RewriteRule ^page/(videos|watch)/([^/]+)/?$ $1.php?title=$2 [L,QSA,NC]