RewriteRule ^([-a-zA-Z0-9_]+)/([0-9]+)/([0-9]+)/([0-9]+)/$ page.php?main=$1⊂=$2&next=$3&last=$4 [QSA,L]
данная проблема похожа на то, что перед правилом есть еще похожее правило, которое заносит в себя часть запроса с флагом L
наглядно приведу пример:
RewriteRule ^(.*)/(.*)/(.*)/(.*)/$ /?do=open&s=$1&y=$2&x=$3&p=$4 [L] # это то самое правило что Вы написали
RewriteRule ^(.*)/(.*)/(.*)/$ /?do=open&s=$1&y=$2&p=$3 [L] # это то правило которое раньше "срабатывает", оно должно стоять после
местами поменяйте и посмотрите какие в ЧПУ могут быть схожие URL
может не прав в данной ситуации не видя htaccess целиком