docs: def prefix_index_page(config):
      """HTML index page for a specific prefix.
  
      The prefix seen by the client is obtained from config.client_prefix
      as opposed to the local server prefix in config.prefix. Also uses
      the identifiers(config) function to get identifiers available.
  
      Arguments:
          config - configuration object in which:
              config.client_prefix - URI path prefix seen by client
              config.host - URI host seen by client
              config.api_version - string for api_version
              config.manipulator - string manipulator type
              config.auth_type - string for auth type
              config.include_osd - whether OSD is included
      """
      title = "IIIF Image API services under %s" % (config.client_prefix)
      # details of this prefix handler
      body = '<p>\n'
      body += 'host = %s<br/>\n' % (config.host)
      body += 'api_version = %s<br/>\n' % (config.api_version)
      body += 'manipulator = %s<br/>\n' % (config.klass_name)
      body += 'auth_type = %s\n</p>\n' % (config.auth_type)
      # table of identifiers and example requests
      ids = identifiers(config)
      api_version = config.api_version
      default = 'native' if api_version < '2.0' else 'default'
      body += '<table border="1">\n<tr><th align="left">Image identifier</th>'
      body += '<th> </th><th>full</th>'
      if (config.klass_name != 'dummy'):
          body += '<th>256,256</th>'
          body += '<th>30deg</th>'
          if (config.include_osd):
              body += '<th> </th>'
      body += "</tr>\n"
      for identifier in sorted(ids):
          base = urljoin('/', config.client_prefix + '/' + identifier)
          body += '<tr><th align="left">%s</th>' % (identifier)
          info = base + "/info.json"
          body += '<td><a href="%s">%s</a></td>' % (info, 'info')
          suffix = "full/full/0/%s" % (default)
          body += '<td><a href="%s">%s</a></td>' % (base + '/' + suffix, suffix)
          if (config.klass_name != 'dummy'):
              suffix = "full/256,256/0/%s" % (default)
              body += '<td><a href="%s">%s</a></td>' % (base + '/' + suffix, suffix)
              suffix = "full/100,/30/%s" % (default)
              body += '<td><a href="%s">%s</a></td>' % (base + '/' + suffix, suffix)
              if (config.include_osd):
                  body += '<td><a href="%s/osd.html">OSD</a></td>' % (base)
          body += "</tr>\n"
      body += "</table<\n"
      return html_page(title, body)