Хотя при тестах в php:
preg_match('/^\/([^\?\.]*)$/i', '/username/dir1/dir2', $matches);
preg_match('/^\/([^\?\.]*)$/i', '/?username/dir1/dir2', $matches);
preg_match('/^\/([^\?\.]*)$/i', '/username/dir1/dir2/file.ext', $matches);
все прекрасно игнорируется где нужно, и совпадает где нужно.