You wish to make substitutions in all except `Subscript` expressions I believe.  This can be done by leveraging the precedence of replacement rules, like this:

    {p, Subscript[p, 1], Subscript[p, 2]} /. {x_Subscript :> x, p -> 1}

>     {1, Subscript[p, 1], Subscript[p, 2]}

Due to the [traversal order][1] of `ReplaceAll` the rule `x_Subscript :> x` acts first, "replacing" any expression with the head `Subscript` by itself.  Since expressions that have already been replaced are not matched again, the second rule `p -> 1` is never applied to these subexpressions.


  [1]: https://mathematica.stackexchange.com/a/9234/121