Syrian rebels and forces loyal to the country's President Bashar al-Assad have agreed to a new ceasefire to end government bombardment of the town of Zabadani and the rebel siege of two Shia villages.

The truce came into force on Thursday morning after talks between the two sides.

Zabadani, near Syria's border with Lebanon, is the last rebel stronghold in the area and has been the focus of repeated assaults by Syrian forces and their allies from the Lebanese Shia movement Hezbollah.

Pro-Assad forces launched an offensive to seize the town from rebels last month and subjected the town to relentless aerial bombardment.

Rebel siege

In retaliation, rebel factions, including al-Qaeda affiliate Nusra Front, besieged the Shia villages of Fua and Kafraya in Idlib province, launching rockets into them.

An earlier ceasefire for the three towns began on August 12 as a 48-hour truce, which was extended another day, but later broke down after negotiators failed to reach a broad deal.

Syria deal: 'Population swap' or 'sectarian cleansing?'

The main focus of the negotiations is the withdrawal of rebels from Zabadani, in exchange for the evacuation of civilians from Fua and Kafraya.

Other demands made by the rebels include the release of prisoners held by government forces.

The two villages are the last remaining government holdouts in Idlib province.

A Zabadani activist speaking to Orient Radio said negotiations took place in Turkey between rebels and an Iranian delegation. He said no representatives of the Assad regime or Hezbollah were present.

Rebel faction Ahrar al-Sham blamed the failure of a previous round of talks, also brokered by Iran and Turkey, on the Iranian delegation, saying it was trying to effectively exchange one area for another.