This is how URLs are handled when entering an XWiki instance:

url-architecture-overall.png

Specifically:

  • When parsing an incoming URL, the Routing Filter will use a default Resource Type Resolver (ResourceTypeResolver) component to extract the Resource Type (ResourceType) from the URL (the Resource Type is the type of URL pointed to, e.g. an Entity if the URL is pointing to a Document for example, a WebJar URL, a Skin URL, a REST URL, etc). In turn the default Resource Type Resolver will read the XWiki configuration to see what URL Scheme is configured (through the url.format configuration parameter) and will then locate a ResourceTypeResolver component with a hint corresponding to the URL Scheme. It'll use it to extract the Resource Type.
  • The Resource Reference Handler Servlet will use a default Resource Reference Resolver (ResourceReferenceResolver) component to parse the passed URL into a ResourceReference object that can then be given to a ResourceReferenceHandler to perform an action. In turn the default Resource Reference Resolver will read the XWiki configuration to see what URL Scheme is configured (through the url.format configuration parameter) and will then locate a ResourceReferenceResolver component with a hint corresponding to the URL Scheme. It'll use it to extract the Resource Reference. 

For more details see the Resource API and the URL API reference documentation.

Customizing URLs

There are several solutions to customize XWiki URLs:

  • You can tune them to some degree by modifying XWiki's configuration. The various options are described in the Short URL documentation.
  • You can rewrite both incoming URLs but also outbound URLs using a Rewrite Filter. An example is also provided in the Short URL documentation.
  • You can implement a new URL Scheme. See the URL API.
  • You can simply register new Resource Types or new Entity Actions. See the URL API.

Note that using Tuckey's Rewrite Filter is very powerful as it also allows using dynamic rules written in Java by using the <class-rule> feature.

Tags:
   

Get Connected