Ты ведь сам ответил на свой вопрос, что надо реализовать 2 правила
Содержание .htaccess:
RewriteRule ^(.*).html$ view.php?cat=$1
RewriteRule ^(.*)/(.*).html$ view.php?cat=$1&podcat=$2
При ссылке http://site/present_cosmetic.html
$_GET[cat] = present_cosmetic
При ссылке http://site/present_cosmetic/dlya_zenchin.html
$_GET[cat] = present_cosmetic/dlya_zenchin
т.е первое правило как бы говорит все, что после индекса в переменную $1( оно прекрівает первое

)
но это нужно только когда ссылка вида http://site/present_cosmetic.html
А при ссылке вида http://site/present_cosmetic/dlya_zenchin.html
в эту переменную $1($_GET[cat] ), записивает present_cosmetic/dlya_zenchin
Все начинает работать если первое правило отключить...
вариант может такой -
проверяем урл если он вида
http://site/present_cosmetic/dlya_zenchin.html
запускаем правило
RewriteRule ^(.*)/(.*).html$ view.php?cat=$1&podcat=$2
а если урл вида
http://site/present_cosmetic.html
то запускаем
RewriteRule ^/(.).html$ view.php?cat=$1
НО КАК ТАКУЮ ПРОВЕРКУ РЕАЛИЗОВАТЬ В .htaccess ?????