This paper presents a novel method to design Petri net-based deadlock prevention controllers for flexible manufacturing systems. It starts from the computation of the complete deadlock markings by utilizing the conservativeness property of a Petri net model and the necessary and sufficient condition for deadlock. Then, it verifies a small state space including the dangerous and bad markings only by combining one-step look-forward through the original net and one-step look-backward via its reverse net. Subsequently, it defines the set of place invariants from the subset of marked operation places for the so called "elementary controlled bad markings". Finally, it synthesizes a deadlock prevention controller by a simplified invariant-based method. Its obtained deadlock-free controller allows more behavior of the closed-loop system than those obtained via a siphon-based control method. Its computational efficiency is higher than those based on a complete reachability graph-based control method.