You are doing the replacement outside of the product. By the time the product command is done its job, there is nothing to replace. Basically you are doing this:
Clear[aList];
sol = Product[Sin[aList[[i]]], {i, 1, Length[aList]}]
and now
sol /. aList -> {1, 1/2}
But sol=1 so nothing gets replaced. Why not just do
aList = {1, 1/2};
sol = Product[Sin[aList[[i]]], {i, 1, Length[aList]}]
Im obviously a bit of a noob with Mathematica which is maybe why I got confused. I think another explanation would be to render the desired result without the postfix notation, that is,
which more clearly indicates that Length will be evaluated before ReplaceAll.
Oddly, (or not so oddly once you see the pattern with some of the Mathematica documentation), the ReplaceAll function syntax is not provided in the Mathtematica documentation, only the postfix /. .