#### This Page

# `urlresolver` ()

- Method of Environment

This is very experimental API and used to register a custom URL resolver function with the environment. It's invoked whenever a node has matched but more data is left to parse. This can be used to implement virtual items. This works in combination with generator but handles the URL matching part of the equation.

The registered function is invoked with a source object and a list of URL path segments.

## Example

    from lektor.sourceobj import VirtualSourceObject
    from lektor.utils import build_url

    class Source(VirtualSourceObject):

        @property
        def path(self):
            return self.record.path + '@source'

        @property
        def url_path(self):
            return build_url([self.record.url_path, 'source.txt'])

    @env.urlresolver
    def match_source_file(node, url_path):
        if url_path == ['source.txt'] \
           and isinstance(node, Record) \
           and not node.is_attachment:
            return Source(node)

## Comments