The aim of this work is to describe a procedure for the partial evaluation of functional logic languages based on rewriting. In this work, we will use the Escher language as an example of a (concurrent) functional logic language which has rewriting as its computational mechanism. Partial evaluation is a program transformation technique which, by performing some computation and abstraction at compile time generates a specialised version of the program. We present an algorithm for the partial evaluation of Escher programs. The algorithm incorporates techniques from the partial evaluation of logic programs and positive supercompliation. We discuss the correctness and termination of the algorithm. Examples of the performance of the algorithm are presented. Finally, we compare our algorithm with the current partial evaluation procedures for narrowing functional-logic languages and traditional logic languages.