diff --git a/dsl.cc b/dsl.cc
index 20e1c62b..1be87892 100644
--- a/dsl.cc
+++ b/dsl.cc
@@ -893,7 +893,12 @@ string DslDictionary::nodeToHtml( ArticleDom::Node const & node )
}
else
if ( node.tagName == GD_NATIVE_TO_WS( L"url" ) )
- result += "" + processNodeChildren( node ) + "";
+ {
+ string link = Html::escape( Utf8::encode( node.renderAsText() ) );
+ if( QUrl::fromEncoded( link.c_str() ).scheme().isEmpty() )
+ link = "http://" + link;
+ result += "" + processNodeChildren( node ) + "";
+ }
else
if ( node.tagName == GD_NATIVE_TO_WS( L"!trs" ) )
result += "" + processNodeChildren( node ) + "";