====== URL Rewriting ====== By default, DokuWiki does no URL rewriting, resulting in URLs like this: http://example.com/doku.php?id=wiki:syntax These URLs are somewhat ugly and might not be indexed well by some search engines. URL rewriting offers a solution to this, resulting in nicer URLs. ===== Rewriting options ===== DokuWiki supports two methods for URL rewriting, enabled through the [[config:userewrite]] option. One relies on the rewriting capabilities of the webserver; the other one handles rewritten URLs inside DokuWiki. The table below summarizes these options. ^ Value ^ Info ^ Example URL ^ | 0 | No URL rewriting is used. This is the default. | %%http://example.com/dokuwiki/doku.php?id=wiki:syntax%% | | 1 | Rewriting is handled by the webserver. | %%http://example.com/dokuwiki/wiki:syntax%% | | 2 | Rewriting is done by DokuWiki. | %%http://example.com/dokuwiki/doku.php/wiki:syntax%% | URL-Rewriting is disabled by default because it requires some additional configuration besides setting the appropriate [[config:userewrite|config option]] - these configs are discussed below. ==== Option 1: web server ==== This option requires some setup in the webserver first. How to enable it, depends on the webserver used. Please refer to the linked pages below for additional info. * [[install:Apache]] -- uses the [[http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html|mod_rewrite]] module. It can be enabled using a ''.htaccess'' file. * [[install:IIS]] -- uses custom rewrite rules or the rewrite module * [[install:nginx]] -- has built in rewriting support * [[install:php-webserver|PHP's built-in web server]] -- needs no configuration, rewrite will work using DokuWiki's index.php router Once the rewriting support has been enabled in the web server, this option can be enabled in the DokuWiki configuration. Select the ''.htaccess'' option in the [[config:userewrite]] config dropdown. Alternatively, in your ''conf/local.php'' file, add or modify the line so it reads: $conf['userewrite'] = 1; In DokuWiki root folder, find the file ''.htaccess.dist'' and copy it as ''.htaccess''. Edit it and uncomment lines referring to userwrite. It's a short file and easy to understand. ==== Option 2: DokuWiki ==== This option won't need any webserver setup. However it relies on the PATH_INFO feature of the CGI standard as implemented by Apache. Some webserver configurations might not support it. To enable this option, select the ''DokuWiki internal'' option in the [[config:userewrite]] config dropdown. Alternatively, in your ''conf/local.php'' file, add or modify the line so it reads: $conf['userewrite'] = 2; ===== Clean PHP session ID ===== Despite using "clean" URLs you may encounter a "DokuWiki" parameter in the URL looking like this: PHP session ID: http://example.com/example?DokuWiki=c81a95369a66576982119e2a60b557a5 This parameter is the PHP session ID and gets added by PHP automatically. It's completely unrelated to rewriting. To avoid it you can force PHP to always use cookies for sessions by setting the ''session.use_only_cookies'' option for PHP. This is usually done in the php.ini config file: session.use_only_cookies=1 You can also try: session.use_trans_sid=0 ====== See Also ====== * [[:tips:httpslogin|Rewrite rules for secure login]] * [[https://stackoverflow.com/questions/9153262/tips-for-debugging-htaccess-rewrite-rules | Tips for debugging .htaccess rewrite rules]]