
Этот шаблон точно никогда не будет совпадать: !^tmp/public, прочтите документацию: там четко указано, что %{REQUEST_URI} содержит абсолютный путь, поэтому включает косую черту в начале. Итак, ваша попытка предотвратить бесконечное правило перезаписи терпит неудачу.
Вместо этого сопоставьте абсолютный путь в вашем состоянии:
Options -Indexes
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/tmp/public
RewriteRule ^(.*)$ tmp/public/$1 [L]
</IfModule>
не могли бы вы проверить httpd error_log и посмотреть, что на самом деле является ошибкой?