Есть сайт site.ru, который лежит в папке html.
А в папке html есть папка site2 в которой находится laravel.
Проблема в том, что если зайти в site.ru/site2 он показывает 404 (при site.ru/site2/public работает)
Куда и с каким кодом разместить htaccess, чтобы работал и site.ru, и site.ru/site2 (без public)?
Тебе не .htaccess править надо, а конфиг самого апача. Найди в конфиге строку DocumentRoot "/var/www/html" и поменяй ее на DocumentRoot "/var/www/html/site2/public"