Table of Contents
Page Names
The pagename is the component of the URL that specifies the page. For example, the URL of the page you are currently reading is https://www.dokuwiki.org/pagename
, and its page name is pagename
.
Naming Conventions
Page names in DokuWiki are converted to lowercase automatically! Allowed characters are letters, digits and, within names 1), the “special characters” dot .
, hyphen -
and underscore _
. All other special characters (i.e. other than letters and digits – whitespace, plus, slash, percent, etc.) are converted to underscores 2) . Colons (:
) are used to identify namespaces 3).
When the deaccent config option is enabled (on by default) local and accented characters are converted to their descriptive equivalents (ü
becomes ue
) or deaccented versions (á
becomes a
).
An implicit constraint on pagename lengths is set by backlinks (pagenames need to have 3 chars at least to be considered in backlinks).
Most templates, including the default, present somewhere the full pagename and the namespaces in its path. The 'dokuwiki' template places it in the tab on the top right corner of the page. For example this page's name is pagename
.
When linking to other Wikis using InterWiki links the name restrictions of these Wikis apply.
Even when CamelCase (aka. WikiWord) is enabled by the CamelCase config the pagenames will remain lowercase.
Note: All restrictions given here for pagenames do apply to media files as well!
Pagenames and Namespaces
You may picture namespaces as directories and pagenames as files inside them.
Therefore the a:b:c
pagename can be pictured as:
root namespace (always present) │ └── 'a' namespace │ └── 'b' namespace │ └── 'c' pagename
Note that you can have a pagename and a namespace with the same name, at the same time, within any namespace. Back to the above example, the a:b
pagename can be pictured as:
root namespace (always present) │ └── 'a' namespace │ └── 'b' pagename (not to be confused with the 'b' namespace above)
This doesn't lead to conflicts, because DokuWiki treats the final token (the one after the last colon) as the name of the page itself, while all other tokens are namespaces.
- In
a:b:c
,a
andb
are namespaces whilec
is a page. - In
a:b
,a
is interpreted as a namespace andb
as a page.
See namespaces for more details.
Hacking the Core for mixed case names
Some people like to hack the DokuWiki core to be able to use mixed case names. This is not recommended and not officially supported and might break DokuWiki functionality in non-obvious ways.
You can hack the code and by commenting out one line in the wiki/inc/pageutils.php about line 109, you will be able to use files with Names_Like_This, if you so choose. Look for this code and comment it out.
$id = utf8_strtolower($id);
This hack, used by me a few years and announced to the User-Forum. Seems not to work with Anteater.
Any idea, to have it there too?
I got to this page needing this hack, along with an ability to also allow spaces in filenames. I added a configurable hack. Default dokuwiki is kept and hack is only used if the appropriate $conf options are used. See the changelog at: https://github.com/ahmetsacan/dokuwiki/commit/0bd10be989c0ea582549ea26ec76f642bf12a6db Sorry, I don't have time to advocate for this change in a pull-request. Use at your own risk.
Also see this thread.