The general format of XWiki URLs is <protocol>://<server>/<context path>/<type>/<path>, where:

  • <protocol>: by default it's http. It's possible to use https (See how to modify the wiki descriptor).
  • <server>: the XWiki instance address and port, e.g. localhost:8080, xwiki.org. In domain-mode the server also contains the subwiki name. See Accessing a wiki. In path-based mode, the server is the address of the main wiki.
  • <context path>: the name under which the XWiki web application is deployed in your Servlet Container, e.g. xwiki. See Short URLs if you wish to deploy XWiki as ROOT.
  • <type>: the type of URL depending on the XWiki subsystem accessed. The following types are supported:
    • bin: points to a dynamic resource. Examples: an Entity to display (wiki, page, space, attachment, object, property, etc), a dynamic skin resource (image, css, js), a dynamic template resource (image, js, css, icon, etc) and more. By dynamic we mean that some computation needs to happen to compute the resource (for example some Velocity needs to be evaluated).
    • wiki: this is similar to bin but specifying the subwiki to access, in path-based mode (See Accessing a wiki).
    • rest: points to a REST Resource
    • skins: points to a static filesystem skin resource (image, js, css, etc), i.e. a resource located inside a skin directory on the filesystem.
    • resources: points to a static template resource (image, js, css, etc) on the filesystem.
    • xmlrpc: points to the now deprecated XMLRPC API (see XML-RPC Integration for more details).
    • webdav: points to a WebDAV resource (see Web DAV for more details).
  • <path>: the path completely depends on the <type> used. See below for more details.
If you're interested in configuring the XWiki URLs, check the URL Architecture page.

Type: bin

XWiki 7.2: Added support for Nested Spaces

There are various bin URLs. The generic format of bin URLs is bin/<action>/<path>. The full list of <action> is defined in the Strut Configuration file (located in WEB-INF/struts-config).

Here are some well-known actions:

  • skin: Dynamic Skin resource, e.g. http://<server>/xwiki/bin/skin/resources/uicomponents/search/searchSuggest.css
  • jsx: Javascript Skin Extension URL, e.g. http://<server>/xwiki/bin/jsx/AnnotationCode/Settings?language=en
  • ssx: StyleSheet Skin Extension URL, e.g. http://<server>/xwiki/bin/ssx/AnnotationCode/Style?language=en
  • webjars: URL when accessing some resources located in a WebJar, e.g. http://<server>/xwiki/bin/webjars/resources/path?value=requirejs%2F2.1.15%2Frequire.min.js
  • download: URL to access an attachment from a wiki page, e.g. http://<server>/xwiki/bin/download/XWiki/JohnDoe/john.png?width=30&height=30&keepAspectRatio=true
  • view: Display Entity content (wiki, page, space, attachment, object, property, etc) with the skin applied, e.g. http://<server>/xwiki/bin/view/Sandbox/WebHome
  • edit: Edits wiki content (page, object, property, etc), e.g. http://<server>/xwiki/bin/edit/Sandbox/WebHome
  • get: Accessing Entity content (wiki, page, space, attachment, object, property, etc) without any skin applied, e.g. http://<server>/xwiki/bin/get/Main/WebHome?xpage=xpart&vm=commentsinline.vm. The get action should be used to render the content of the page and nothing else (mainly used for code pages). This action is similar to the view action, but without the UI and with "text/plain" mime type set by default for the response.
  • export: Exports wiki pages to various formats (PDF, HTML, etc). See Exports.
  • viewrev: This action is the same as the view action but allowing to address a given revision of the document asked.
  • create: Provides the UI for creating new documents, e.g. http://<server>/xwiki/bin/create/Space/NewDocument

Action: view

The additional URL paths for the view action is <space1>/.../<spaceN>/<page>?<query string> or <space1>/.../<spaceN>?<query string>

Examples:

  • http://<server>/xwiki/bin/view/Sandbox/WebHome: Views the Sandbox.WebHome page.
  • http://<server>/xwiki/bin/view/Sandbox: Views the Sandbox.WebHome page.
  • http://<server>/xwiki/bin/view/Space1/Space2: Views the Space1.Space2.WebHome page (if the Space2 page doesn't exist. If it exists then it views the Space1.Space2 page).
  • http://<server>/xwiki/bin/view/Space1/Space2/: Force to always views the Space1.Space2.WebHome page (even if the Space2 page exists in the Space1 space. Note the / at the end).
  • http://<server>/xwiki/bin/view/Space1/Space2?spaceRedirect=false: Force to always view the Space1.Space2 terminal page (even if the Space1.Space2.WebHome page exists and even if the Space1.Space2 page may not exist).

Here are some of the supported query string parameters.

Parameter: xpage

  • plain: this value indicates that only the content of the page is printed (no UI). With a document that's not using the XWiki Syntax 1.0 you can control the output syntax using outputSyntax and outputSyntaxVersion. You can also pass other parameters to allow fine-grained control:
    • raw=1: Returns the page source as is without any formatting but XML-escaped
    • raw=2: Returns the page source as is without any formatting (without any escaping)
    • htmlHeaderAndFooter=true: Since 6.3RC1 Display the HTML headers (<html>,<head>,<body>, etc...) and footers (</body>, </html>, etc...).
    • outputTitle: Since 7.3M2 If true then also display the title in addition to the content. Defaults to false if not specified.
  • xml: print the exported form of a document. This is what you can find in the xar for each document.
  • rev: when specified, redirects to the viewrev action (see below)
  • children: Since 7.2M3 display a page that lists all the children of the document. You can also add the following parameters:
    • hierarchy=parentchild: do the same but display the children according to the (old) parent/child mechanism
    • displayHidden=true: display the hidden documents (no matter what the user's configuration is)
  • backlinks: Since 7.2M3 display a page that lists all the documents having a link to the current document. You can also add the following parameters:
    • displayHidden=true: display the hidden documents (no matter what the user's configuration is)
  • siblings: Since 7.2RC1 display a page that lists all the children of the parent of the document. You can also add the following parameter:
    • displayHidden=true: display the hidden documents (no matter what the user's configuration is)
  • hierarchy_reference: Since 7.3M2 display the hierarchy of the page, as raw HTML, without any style. You can also add the following parameters:
    • id=someId: add an HTML id to the hierarchy breadcrumb.
    • displayTitle=true|false: display the title of the elements in the breadcrumb (default: true)
    • excludeSelf=true|false: display the hierarchy without the page itself (default: false)
    • limit=: maximum number of hierarchy elements displayed (default: none)
    • local=true|false: do not display the main wiki reference for documents located in sub-wikis. (default: false)

Parameter: outputSyntax and outputSyntaxVersion

With a document that's not using the XWiki 1.0 syntax it's possible to explicitly indicate the renderer to use for the page content. For example with outputSyntax=plain you will get the result in plain text. outputSyntaxVersion is an optional parameter, if it's not provided XWiki will search for the last version of the renderer for the given outputSyntax syntax name. Note that outputSyntax controls only the document content output syntax. If you only want the document content you can use xpage=plain.

See Rendering Module for more details on renderers.

Parameter: viewer

Note: if the document does not exist, you will have a 404 error page, and the following parameters will not be taken into account. Use xpage if you need to have the desired behavior even if the document does not exist.

  • children: Since 7.2RC1 display a page that lists all the children of the document. You can also add the following parameters:
    • hierarchy=parentchild: do the same but display the children according to the (old) parent/child mechanism
    • displayHidden=true: display the hidden documents (no matter what the user's configuration is)
  • backlinks: Since 7.2RC1 display a page that lists all the documents having a link to the current document. You can also add the following parameter:
    • displayHidden=true: display the hidden documents (no matter what the user's configuration is)
  • siblings: Since 7.2RC1 display a page that lists all the children of the parent of the document. You can also add the following parameter:
    • displayHidden=true: display the hidden documents (no matter what the user's configuration is)

Parameter: spaceRedirect

Accepted values:

  • true (default): By default, an URL not ending in / resolves to a non-terminal page, unless the equivalent terminal page already exists.
  • false: An URL not ending in / will always resolve to a terminal page.

Not applicable (i.e. no effect) for top-level pages and URLs ending in /.

Examples:

  • http://<server>/xwiki/bin/view/Space1/Space2[?spaceRedirect=true]: Views the Space1.Space2.WebHome page (if the Space2 page doesn't exist. If it exists then it views the Space1.Space2 page).
  • http://<server>/xwiki/bin/view/Space1/Space2?spaceRedirect=false: Force to always view the Space1.Space2 terminal page (even if the Space1.Space2.WebHome page exists and even if the Space1.Space2 page may not exist).
  • http://<server>/xwiki/bin/view/Space1[?spaceRedirect=false|?spaceRedirect=true|/]: Will always view the Space1.WebHome non-terminal page because it is a top level page and we can never have a top-level terminal page.

Action: viewrev

Parameter: rev

The version to get, e.g. 2.3 in http://<server>/xwiki/bin/viewrev/MySpace/MyPage?rev=2.3 

Action: save

The additional URL paths for the save action is <space>/<page>?<query string>.

Examples:

  • http://<server>/xwiki/bin/save/Sandbox/WebHome: Save the Sandbox.WebHome page.

Here are some of the supported query string parameters.

Parameter: creator

Change the creator of the current page.  Should be a string as a Document Reference like JohnDoe, XWiki.JohnDoe or xwiki:XWiki.JohnDoe which is a page containing an XWiki.Users object.

Parameter: language

Will target a specific language.  You must use a specific 2-letters code (see I18N).

Parameter: objectPolicy

Since 7.1M1 The objectPolicy parameter is a request configuration parameter that will decide how to handle custom query string parameters (see Custom Parameters):

  • update
    • Each custom parameter will update a property in an existing object of the current page.
    • If the custom parameter refers to a property or an object that don't exist, it will simply ignore it.
  • updateOrCreate
    • Each custom parameter will update a property in an existing object of the current page.
    • If the custom parameter refers to a property that doesn't exist, it will ignore it.
    • If the custom parameter refers to an object that doesn't exist, it will create it (and pad will null objects if needed).

      Example: If there is already 2 objects XWiki.XWikiRights in the page, XWiki.XWikiRights_0_levels and XWiki.XWikiRights_1_levels will update these existing objects. XWiki.XWikiRights_2_levels and XWiki.XWikiRights_3_levels will create 2 new objects. XWiki.XWikiRights_42_levels will be created and 37 empty objects too (42 minus the 4 already existing and minus the 42th which will be created).
      Note: All this information about empty/null objects is currently an implementation detail of how we currently handle object numbers and it may be subject to future change so, as much as possible, do not rely on it and, instead, use the public available APIs to handle these things.

Parameter: parent

Allows you to set the parent of the page.  Should be a string as a Document Reference like WebHome, Main.WebHome or xwiki:Main.WebHome.

Parameter: syntaxId

Specify which syntax is used for the content of the current page (see Supported syntaxes).

Parameter: template

Allows you to have a specific template to apply for the current page.  Should be a string as a Document Reference like MyTemplate, Main.MyTemplate or xwiki:Main.MyTemplate.

Parameter: title

Allows you to modify the title of the page.

Custom Parameters

Custom parameters have the format <Space>.<ClassPage>_<number>_<propertyname> (e.g. XWiki.XWikiUsers_0_password or XWiki.WatchListClass_3_interval):

  • <Space> must refer to an existing space of the wiki
  • <ClassPage> must refer to a class
  • <number> is a positive number
  • <propertyname> is a name of a property of the class <Space>.<ClassPage>

Action: inline

The additional URL paths for the inline action is <space>/<page>?<query string>.

Examples:

  • http://<server>/xwiki/bin/inline/Sandbox/WebHome: Edit in inline mode the Sandbox.WebHome page.

For the supported query string parameters, you can refer to the save action.

Action: get

Parameter: htmlHeaderAndFooter

Since 6.3RC1 If htmlHeaderAndFooter=true is passed then display the HTML headers (<html>,<head>,<body>, etc...) and footers (</body>, </html>, etc...).

Action: download

The additional URL paths for the download action is <space1>/.../<spaceN>/<page>/<attachment>?<query string>.

Example:

  • http://<server>/xwiki/bin/download/Space1/Space2/WebHome/image.png: Views the image.png attachment located in the Space1.Space2.WebHome page.

Parameter: force-download

If set, force the attachment to be downloaded instead of being opened in the browser (it sets the Content-Disposition header to attachment instead of inline).

Action: create

The additional URL paths for the create action is <space1>/.../<spaceN>/<page>?<query string>.

Examples:

    http://<server>/xwiki/bin/create/Space1/Space2/NewPage: UI for creating the Space1.Space2.NewPage document (also known as a terminal document).
    http://<server>/xwiki/bin/create/Space1/Space2/WebHome: UI for creating the Space1.Space2.WebHome document (which is also known as a space homepage or a non-terminal document).
    http://<server>/xwiki/bin/create/Main/WebHome: Generic UI for creating a new document (asking for location and document name since Main.WebHome already exists)

Here are some of the supported query string parameters.

Parameter: spaceReference

Since 7.2M1 A local reference string serialization of the space in which to create the new document, e.g. "Space1.Space2"

Note: Since it's a serialized string reference, entity names need to be already escaped. For a space name "A.B", the equivalent local space reference would be "A\.B". Another example of serialized local space reference would be "A\.B.C\.D", meaning space "C.D" inside space "A.B". See the Model Module's documentation for more information on EntityReferences.

Parameter: name

Since 7.2M1 A string representing the name of the new entity, e.g. "NewDocument".

Depending on the type of document to create, this will be used as:

  • a space name, when creating non-terminal documents, e.g. spaceReference=Space&name=Page results in creating "Space.Page.WebHome"
  • a document name, when creating terminal documents, e.g. spaceReference=Space&name=Page&tocreate=terminal results in creating "Space.Page"

Parameter: tocreate

Accepted values:

  • empty or not specified:
    • if the current document does not exist, a terminal document will be created having the current document's reference, e.g. /create/Space/NewPage creates "Space.NewPage"
    • if the current document exists, the new document (specified using the spaceReference + name parameters pair) is created as a non-terminal document, e.g. /create/Main/WebHome?spaceReference=Space&name=NewPage creates "Space.NewPage.WebHome".
    • Deprecated since 7.2M1 if the current document exists, the new document (specified using the deprecated space + pageName parameters pair) is created as a terminal document, e.g. /create/Main/WebHome?space=Space&page=NewPage creates "Space.NewPage".
  • "terminal" - forces the new document to be a terminal document.
    • Example: If "Space1.Space2.Page" is to be created, then it is already a terminal document and is not affected in any way by this setting, but if "Space1.Space2.WebHome" is to be created then it would be a non-terminal document by default. In this later case, specifying the tocreate=terminal parameter would force the creation of a terminal document instead, result in the creation of Space1.Space2 (i.e. the page named "Space2" in the space "Space1"), effectively going up one level in the Nested Spaces hierarchy.
    • In the case of a top level space's WebHome document (e.g. "Space.WebHome"), this setting is ignored, since the top limit of the hierarchy is reached and there is nowhere else to go up. The resulting document to be created is thus "Space.WebHome".
  • "space" - Deprecated since 7.2M1 The document to be created will always be a space WebHome (a.k.a a non-terminal document). This value is considered only when used in conjunction with the deprecated space parameter. In this case, the deprecated page parameter is completely ignored. For example: tocreate=space&space=MySpace will result in "MySpace.WebHome".

Parameter: template

A string serialized document reference of the document to use as template when creating the new document.

If empty, the new document will be a blank page.

If not specified, and existing template providers are available to choose from in the current space and the templateprovider parameter is also not specified, no document will be created yet and the create UI will show up asking the user to choose a template provider from a list.

This parameter has precedence over the templateprovider parameter, meaning that if both are specified, the templateprovider will be ignored.

Parameter: templateprovider

A string serialized document reference of the template provider document to use when creating the new document. The actual template document to use will be extracted from the specified template provider.

If the specified template provider is not allowed to be used in the space where the new document is created, then the create UI will be displayed with an error.
Note: This check is done for the spaceReference of the new document to be created. Example: If we are creating the terminal document "Space.NewPage", the check is done for the space "Space". However, if we are creating the non-terminal document "Space.NewPage.WebHome", the check is done for the non-terminal document's space "Space" and not for actual document's reference space "NewPage".

If empty, the new document will be a blank page.

If not specified, and existing template providers are available to choose from in the current space and the template# parmeter is also not specified, no document will be created yet and the create UI will show up asking the user to choose a template provider from a list.

If both this parameter and the template parameter are specified, the template parameter will be used instead of and this parameter will be ignored.

Parameter: title

A string to use as the title of the new document.

Parameter: parent

Deprecated since 7.2M1 A string serialized document reference of the document to use as parent for the new document.

Parameter: space

Deprecated since 7.2M1 A string representing an unescaped space name where the new document will be created, Example: "MySpace", "SpaceNameWith.Dots", etc.

Note: Because this is just a space name and not a space local reference, only top level space documents can be created, i.e. "TopLevelSpace.Document" is possible but not "TopLevelSpace.SecondLevelSpace.Document".

Parameter: pageName

Deprecated since 7.2M1 A string representing the name of the new document. Example: "NewDocument"

Note: When using tocreate=space in conjunction with the space parameter, this parameter will be ignored and the document "<space>.WebHome" will be created.

Action: skin

Right now dynamic Skin Resources are handled as Entity Resources (which is not correct).

The additional URL paths for the skin action is

  • <filesystem path to resource>?<optional query string> for Filesystem-based Skins
  • <space1>/.../<spaceN>/<page>/<attachment name> for a resource attached to a wiki page. Note that Velocity is executed only if the attachment has a CSS or Javascript extension name.
  • <space1>/.../<spaceN>/<page>/<xobject property name> for Skins defined in wiki pages and having an XWiki.XWikiSkins xobject with a property named <xobject property name>. Note that Velocity is executed only if the <xobject property name> name has a CSS or Javascript extension name.

Examples:

  • http://<server>/xwiki/bin/skin/skins/flamingo/style.css?skin=XWiki.DefaultSkin&colorTheme=playground%3AFlamingoThemes.Charcoal: Points to the style.css resource located in the [xwiki webapp location]/skins/flamingo directory on the filesystem (and if not found look for the resource in the base skin and default base skin).
  • http://<server>/xwiki/bin/skin/resources/uicomponents/search/searchSuggest.css: Points to the searchSuggest.css resource located in the [xwiki webapp location]/resources/uicomponents/search directory on the filesystem.
  • http://<server>/xwiki/bin/skin/uicomponents/search/searchSuggest.css: Similar as just above except that the resources part has been omitted and if the resource doesn't exist in [xwiki webapp location]/uicomponents/search then it's also searched for in [xwiki webapp location]/resources/uicomponents/search 
  • http://<server>/xwiki/bin/skin/XWiki/DefaultSkin/somefile.css: Points to the somefile.css attachment in the XWiki.DefaultSkin wiki page (and if not found look for the resource in the base skin and default base skin).
  • http://<server>/xwiki/bin/skin/XWiki/DefaultSkin/edit.vm: Points to the content of the edit.vm property in the XWiki.XWikiSkins xobject in the XWiki.DefaultSkin wiki page (and if not found look for the resource in the base skin and default base skin).

Type: wiki

XWiki 7.2: Added support for Nested Spaces

The format is wiki/<wiki name>/<bin subpath> where:

  • <wiki name>: the name of the subwiki, e.g. platform.
  • <bin subpath>: the same path as for the bin action (see above). For example, if you use http://<main wiki server>/xwiki/bin/download/XWiki/JohnDoe/john.png you would use http://<main wiki server>/xwiki/wiki/<subwiki name>/download/XWiki/JohnDoe/john.png to access the same attachment but located in a subwiki named <subwiki>.

Type: resources

Static template resources, e.g. http://<server>/xwiki/resources/js/prototype/prototype.js.

Type: skins

Static skin resources, e.g. http://<server>/xwiki/skins/flamingo/logo.png.

Type: temp

Dynamic temporary resources, bound to a specific document and a specific module.

The format is temp/<Space>/<Document>/<module>/<file.ext>, where:

  • <Space> and <Document> identify the target document; currently only the last part of the space is supported
  • <module> is the name of the module that generated the resource, a short string used for avoiding conflicts between different modules generating temporary files with the same name
  • <file.ext> is the name of the temporary file

Parameter: force-download

If set to 1, force the file to be downloaded instead of being opened in the browser (it sets the Content-Disposition header to attachment).

Parameter: force-filename

[since 9.0RC1]

If force-download is set, the value of force-filename is used in the Content-disposition HTTP header to indicate the name of the file to the browser.

Resource Handler based types

Since 6.1 any extension can dynamically register (as components) "resource handlers" (not to mix with the "resources" type).

See known resource types

Tags:
Created by Vincent Massol on 2017/09/05
   

Get Connected