Это должно работать:
RewriteCond %{REQUEST_URI} !assets/
RewriteCond %{REQUEST_URI} !uploads/
RewriteRule ^([a-z|0-9_&;=-]+)/([a-z|0-9_&;=-]+)(?:/([a-z|0-9_&;=-]+))?(?:/([a-z|0-9_&;=-]+))? index.php?method=$1&value=$2&opt1=$3&opt2=$4 [NC,L]
(?:) не является группой захвата и? после того, как это делает его необязательным.
Я не уверен, работают ли группы без захвата в mod_rewrite, если не используют нормальные группы, просто позаботьтесь об использовании правильного числа после $ при извлечении значений. Как здесь:
RewriteCond %{REQUEST_URI} !assets/
RewriteCond %{REQUEST_URI} !uploads/
RewriteRule ^([a-z|0-9_&;=-]+)/([a-z|0-9_&;=-]+)(/([a-z|0-9_&;=-]+))?(/([a-z|0-9_&;=-]+))? index.php?method=$1&value=$2&opt1=$4&opt2=$6 [NC,L]
Группы нумеруются так, как если бы вы нумеровали их открывающие скобки слева направо, начиная с 1.