Since $f(x) = f(1)f(x)$ for all $x$, either $f(1)=1$, or else $f(x)=0$ for all $x$. Assume $f(1)=1$. If $f(a)=0$ for some $a\neq 0$, then $f(b) = f(a)f(b/a) = 0$ for all $b$, so we may assume $f(a)\neq 0$ for all $a\neq 0$.
Also, $f(1) = f(-1)^2$, so either $f(-1)=1$ or $f(-1)=-1$. If $a\gt 0$ then $f(a)=(f(\sqrt{a}))^2$, so $a\gt 0$ implies $f(a)\gt 0$. Thus, if $f(-1)=-1$ then $f$ is odd on the nonzero numbers; and if $f(-1)=1$ then $f$ is even.
As for $f(0)$, since $f(0)=f(0)^2$, either $f(0)=0$ or $f(0)=1$. If $f(0)=1$, then $1=f(0) = f(0a) = f(a)$, so $f(a)=1$ for all $a$.
So we have a couple of "degenerate" solutions: $f(a)=0$ for all $a$; $f(a)=1$ for all $a$; and $f(a)=1$ for all $a\neq 0$ and $f(0)=0$.
So now assume that $f(1)=1$, $f(0)=0$, $f(a)\gt 0$ for all $a\gt 0$.
Now consider $g(x) = \ln(f(e^x))$. Then
$$g(x+y) = \ln(f(e^{x+y})) = \ln(f(e^xe^y)) = \ln (f(e^x)f(e^y)) = \ln(f(e^x))+\ln(f(e^y)) = g(x)+g(y),$$
so $g$ satisfies Cauchy's Functional Equation.
Both the "even" and the "odd" version of $f$ yield the same $g$, since $g$ only depends on the values of $f$ on the positive reals.
Conversely, given any $g\neq 0$ that satisfies Cauchy's Functional Equation, define $h$ on the positive reals by $h(x) = \exp(g(\ln(x))$. Then $h(xy) = h(x)h(y)$, and $h(x)$ is not the constant function $1$. Letting $h(0)=0$, you obtain two functions $f$ that satisfy your original equation: $f(x) = h(|x|)$, and $f(x) = \mathrm{sgn}(x)h(|x|)$.
Now, I cheated, because Cauchy's Functional Equation does not have an explicit complete list of solutions, but it's been well-studied, so you might as well look into that instead of trying to re-invent the wheel.