Russian police detained at least 94 people on Wednesday, including opposition politician Alexei Navalny, at a protest in Moscow calling for punishment for police officers involved in the alleged framing of a journalist, monitors said.

Police abruptly dropped drugs charges a day earlier against journalist Ivan Golunov, a rare U-turn by the authorities in the face of anger from his supporters who said he was framed for his reporting.

Golunov, a 36-year-old journalist known for exposing corruption among Moscow city officials, was detained by police last Thursday and accused of dealing drugs, an allegation he flatly denied.

The crude way supporters said Golunov was set up and detained triggered an unusual show of media unity and an uncharacteristically swift reversal from authorities nervous about social unrest at a time when President Vladimir Putin already faces disquiet over living standards.

The authorities had hoped freeing Golunov and promising punishment for those who allegedly framed him would appease his supporters' anger, but his colleagues decided to go ahead with a protest on Wednesday, a public holiday in Russia, regardless.

The authorities had warned them in advance that the demonstration would be illegal and could pose a risk to public safety.

Under Russian law, the time and place of protests involving more than one person needs to be agreed with the authorities in advance. Organizers of Wednesday's event had demanded that Moscow city officials negotiate those terms with them during a live broadcast, something officials refused to do.

OVD-Info, a monitoring group, said police had detained at least 94 people, some of them by force.

A witness saw at least three police officers bundle opposition politician Alexei Navalny into a truck.