Red, 51 bytes
func[s][copy/part t: append copy s s find next t s]
A Red port of xnor's Python solution. Don't forget to upvote his answer!
Using parse
:
Red, 71 bytes
func[s][n: 0 until[n: n + 1 parse s[copy t n skip any t]]copy/part s n]