Как на самом деле работает mod_rewrite
mod_rewrite запускает обработку запроса снова и снова, до тех пор, пока он не перестанет меняться.
Флаг [L] останавливает не весь цикл, а только текущую итерацию обработки запроса.
После того, как сработало последнее правило RewriteRule и был добавлен RewriteBase, mod_rewrite смотрит, изменился запрос или нет.
Если запрос изменился, его обработка начинается заново с начала .htaccess.
RewriteBase /
...
RewriteBase /dash-dev/dist
...
Тут подвох в том, что указание двух разных RewriteBase не вызывает каких-либо ошибок синтаксиса или предупреждений, но используется только последнее значение.
Для запроса /ajax/signup срабатывает
RewriteRule ^(.*)$ $1.php [L]
и перенаправляет на ajax/signup.php, а после добавления RewriteBase получается /dash-dev/dist/ajax/signup.php и обработка начинается заново с начала .htaccess
В итоге срабатывает самое последнее правило
RewriteRule . /dash-dev/dist [L]
Нужно убрать
RewriteBase /dash-dev/dist