There are many function $f(x)$ not of the form $x^r$ that satisfy $f(x^2)=f(x)^2$.
We begin with Igor Rivin's suggestion to make a logarithmic substitution. Actually, we can make a double logarithmic substitution to simplify the functional equation even further.
Let's use the extended real numbers $[-\infty,\infty]:=\mathbb{R}\cup\{-\infty,\infty\}$, which have the homeomorphism type of a closed interval. We extend the exponenential and logarithm functions in the usual way (i.e., $2^\infty=\infty$, $2^{-\infty}=0$, $\log 0=-\infty$, $\log \infty=\infty$). The extensions remain continuous.
Let $\varphi:[0,1]\to [-\infty,\infty]$ be given by
$$
\varphi(x)=\log_2(-\log_2 x).
$$
This is a homeomorphism, with inverse
$$
\varphi^{-1}(v)=2^{-(2^v)}.
$$
The map $\varphi$ gives a correspondence between continuous $f:[0,1]\to [0,1]$ and continuous $h:[-\infty,\infty]\to[-\infty,\infty]$, given by
$$
h=\varphi\circ f\circ\varphi^{-1}.
$$
It can be checked that $f(x^2)=f(x)^2$ for all $x\in[0,1]$ if and only if $h(v+1)=h(v)+1$ for all $v\in[-\infty,\infty]$ (with the convention $-\infty+1=-\infty$ and $\infty+1=\infty$).
If $h(v+1)=h(v)+1$, the $h$ is determined by its restriction to any interval of length 1, say $[0,1]$. A continuous function $j:[0,1]\to [-\infty,\infty]$ is the restriction of some $h$ satisfying $h(v+1)=h(v)+1$ if and only if $j$ is either identically $-\infty$, identically infinity, or finite everywhere. When $j$ is identically $\pm\infty$, $f(x)$ is identically $0$ or $1$, so we exclude these cases.
Explicitly: let $h:[0,1]\to (-\infty,\infty)$ be any continuous function satisfying $h(1)=h(0)+1$. We extend $h$ to a continuous function $(-\infty,\infty)\to (-\infty,\infty)$ by
$$
h(v)=h\left( v-\lfloor v\rfloor\right)+\lfloor v\rfloor.
$$
Finally, we set $h(-\infty)=-\infty$, $h(\infty)=h(\infty)$. Then the function $f:[0,1]\to[0,1]$ given by $f(x)=\varphi^{-1}(h(\varphi(x)))$ satisfies $f(x^2)=f(x)^2$.
As a special case: if $h(v)=v+\lambda$ for some fixed $\lambda\in\mathbb{R}$, then$f(x)=x^{2^\lambda}$, so we get every function $f(x)=x^r$ (for $r>0$) this way.
To get an $f$ not of this form, we need a different $h$. For example, we could take $h(v)=v+\sin(2\pi v)$, which is continuous and satisfies $h(v+1)=h(v)+1$.