diff --git a/src/ghtml-gtkhtml.c b/src/ghtml-gtkhtml.c
index 3fc219e..97b7d55 100644
--- a/src/ghtml-gtkhtml.c
+++ b/src/ghtml-gtkhtml.c
@@ -583,14 +583,19 @@ static void _ghtml_set_status(GHtml * ghtml, char const * status)
static int _ghtml_document_load(GHtml * ghtml, gchar const * url,
gchar const * post)
{
+ char const * q;
GHtmlConn * gc;
History * h;
_ghtml_stop(ghtml);
- if((h = _history_new(url, post)) == NULL)
- return 1;
- ghtml->history = g_list_append(ghtml->history, h);
- ghtml->current = g_list_last(ghtml->history);
+ if((q = _history_get_location(ghtml->current)) == NULL
+ || strcmp(q, url) != 0)
+ {
+ if((h = _history_new(url, post)) == NULL)
+ return 1;
+ ghtml->current = _history_append(h, ghtml->current);
+ ghtml->history = g_list_first(ghtml->current);
+ }
surfer_set_location(ghtml->surfer, url);
surfer_set_title(ghtml->surfer, NULL);
html_document_open_stream(ghtml->html_document, "text/html");