Wales international John flew north on Wednesday night for a medical and to be shown around the club’s Auchenhowie training base.
He then checked in to Ibrox early on Thursday morning to put the finishing touches on a move that will now see him compete with Rangers skipper Lee Wallace for a starting spot in Pedro Caixinha’s line-up.
John has been capped twice for his country but has fallen out of Cardiff boss Neil Warnock’s plans.
Ibrox sources have shot down rumours suggesting Rangers are set to offer out-of-favour Aston Villa striker Ross McCormack a return to the club where he started his career.
And it is understood Gers chiefs have not yet returned with a fresh bid for Hearts playmaker Jamie Walker, contrary to reports on Thursday morning.
Caixinha remains keen on a player he tried to sign earlier this summer but is not prepared to meet the Jambos’ £1million asking price.
Unless Tynecastle chiefs reduce their valuation, Caixinha is willing to wait until January when he is confident he will land the 24-year-old on a pre-contract.