The vessel Aquarius, operated by the aid group SOS Mediterranee, said the Italian coastguard leading the convoy has changed course to skirt Sardinia’s east coast.
High waves are said to have caused migrants on board to become seasick, with many being taken inside the ship to be treated.
Spain offered safe harbour in Valencia after Italy, which wants other EU countries to accept more migrants, refused to do so.
Malta also refused to come to the aid of the migrants, who were left stranded on a ship with only one day’s supply of food.
The Aquarius crew had rescued 229 migrants off the coast of Libya on Saturday.
It took on 400 others that were saved by Italy’s coast guard.
Seven pregnant women and 100 unaccompanied children are on the boat that has been rerouted.
Italy’s refusal to accept the ship marked the first major anti-migrant move since far-right interior minister Matteo Salvini took office in June.
He had ran in the country’s general election in 2018 promising to crack down on illegal immigration.
Spanish socialist Prime Minister Pedro Sanchez offered to take in the Aquarius insisting it was an “obligation” to do so.
Italy’s move nearly sparked a diplomatic row, with prime minister Giuseppe Conte considering postponing a meeting with French president Emmanuel Macron
France’s leader had said Rome acted with “cynicism and irresponsibility” by rejecting the ship.
Mr Salvini called on Mr Macron to apologise.
The French president’s office has confirmed his meeting with Mr Conte will still take place.
The UN refugee agency’s chief Filippo Grandi branded Italy’s refusal of the ship “shameful”.
It comes amid an ongoing diplomatic row after several countries failed to live up to a 2015 pledge to take some asylum seekers from Italy and Greece, which have become the first port of call for most migrants entering Europe.
A European Union summit later in June is due to consider changes to asylum law to better share the burden of incoming migrants.
More than 1.8 million people have entered Europe since 2014, with more than 600,000 arriving in Italy..