Из-за чего возникает пустой $_SERVER['REQUEST_URI']?
Всегда будет хотя бы "/"
А вот QUERY_STRING может быть пустой
Пустого быть не может. Отсутствовать ключ REQUEST_URI  в $_SERVER может если сервер криво настроен, либо это CLI (нет запроса нет URI).