Respiration monitoring (RM) is essential for diagnosing and tracking respiratory diseases. Recently, RFID technology has enabled RM in a lightweight and cost-effective way by only attaching the tiny and cheap RFID tag on the monitored person's chest. However, current systems are mostly designed for static environments with no surrounding people's movements. In reality, dynamic environments where people could move nearby the monitored person are quite common. In such environments, respiration signals would be disturbed by the dynamic multipath signals from ambient movements, which may lead to inaccurate RM results. In this paper, we study how to realize robust RFID-based RM in dynamic environments with accurate respiration rate estimation and apnea detection. We find that the dynamic multipath signals can cause not only high-frequency noises but also fake and distorted respiration cycles, which cannot be simply removed by the low-pass filter. Thus, we need a new method to eliminate the effect of multipath signals. Inspired by the intrinsic features of human respiration pattern, we propose to transform the respiration pattern into a matched filter, which can extract the real respiration cycles out of noisy RFID signals. We then estimate the respiration rate by counting the respiration cycles via multi-scale peak detection. For apnea detection, the problem from multipath signals is that the fake respiration cycles can result in the missing detection of apnea when the monitored person stops breathing. To address this issue, we define a new indicator which measures the dominance of respiration components in the signal's spectrum to identify apnea from multipath signals. Experimental results show that our system achieves an average error of 0.5 bpm for respiration rate estimation and a 5.3% error for apnea detection in dynamic environments.