WASHINGTON - U.S. President George Bush ordered an indefinite halt in U.S. troop withdrawals from Iraq after July on Thursday, embracing the key recommendations of his top war commander.

Bush said Gen. David Petraeus will "have all the time he needs'' to consider when more American forces could return home.

Bush's decisions virtually guarantees a major U.S. presence in Iraq throughout his term in office until January, when a new president takes office.

In another major decision, the president announced he will seek to relieve the heavy strain on the U.S. Army by reducing the length of combat tours in Iraq and Afghanistan to 12 months, down from the current level of 15 months.

He said the change would take effect on Aug. 1, and would affect U.S. forces already deployed on the front lines.

Bush said U.S. forces have made major gains in Iraq since he ordered a buildup of about 30,000 U.S. troops. "We have renewed and revived the prospect of success,'' the president said.

Bush delivered his remarks in the Cross Hall of the White House before an audience of veterans' service groups, Vice-President Dick Cheney, Defence Secretary Robert Gates and Secretary of State Condoleezza Rice.

The president's decision had been foreshadowed by two days of testimony before a skeptical Congress by Petraeus and Ryan Crocker, the U.S. ambassador to Baghdad.

Now in its sixth year, the war has claimed the lives of more than 4,000 U.S. troops and cost more than US$500 billion.

Bush said the United States would proceed with planned drawdowns of U.S. forces, bringing home the 30,000 troops he sent to Iraq last year to combat sectarian violence. The additional troops were also intended to help restore basic security and provide a sense of calm to allow Iraqi leaders to attempt to achieve political reconciliation.

While acknowledging that "serious and complex problems remain in Iraq,'' Bush said that "a major strategic shift'' has occurred since the buildup.

"Today we have the initiative,'' the president said.