I managed to make the admin pages (admin/configuration.php etc.) inaccessible by changing the site_admin_url setting through the configuration page (I was trying to set up admin access via a subdirectory of a separate domain so I could use an existing TLS cert). As the config pages were not working, I couldn't reset site_admin_url the normal way, so I changed it manually in the database by editing the corresponding row of gl_conf_values.
Unfortunately it doesn't work - if I set site_admin_url = 'http://my.domain.tld/admin' in the DB then my admin page links are generated as e.g. http://my.domain.tld/configuration.php
However, if I set site_admin_url = 'http://my.domain.tld/admin/' then the links are of the form http://my.domain.tld/admin//configuration.php
For some reason the /admin/ component of the path is being removed when I have the standard admin path set. Any ideas on how I can fix it? For the moment I have bodged it by directly setting $_CONF['site_admin_url'] in siteconfig.php, but I would like to be able to fix it properly. I have tried clearing geeklog template caches and browser caches, but this has not helped.