PMWiki CleanURLs with Lighttpd¶
Rewriting for PMWiki isn't very difficult at all.
Dedicated vhost¶
A vhost of wiki.example.com is used in this example. Add this snippet to your lighttpd.conf, after enabling mod_rewrite.
$HTTP["host"] == "wiki.example.com" { index-file.names = ("pmwiki.php") url.rewrite-once = ( "^/([a-zA-Z0-9]+)/([a-zA-Z=?0-9.&:\-_%]+)$" => "/pmwiki.php?n=$1.$2", "^/([a-zA-Z0-9/]+)$" => "/pmwiki.php?n=Category.$1" ) }
I have this code setup to redirect any one-level inquiries (http://wiki.example.com/group) to Category.$1. You can change that easily, and make it $1.$1 or Main.$1, whatever you want. (blaster8: I have found that to make all of the links with the 'lean' skin sane, the option $1.HomePage is the best replacement for Category.$1)
Now, change your config variables in config.php to the following:
$EnablePathInfo = 1; $ScriptUrl = "http://wiki.example.com"; $PubDirUrl = "http://wiki.example.com/pub";
Subdirectory¶
To set up a wiki in `http://example.com/wiki/@ instead of @http://wiki.example.com/`, perform the following steps:
Put the following in PMWiki's config.php
:
$EnablePathInfo = 1; $ScriptUrl = "http://example.com/wiki"; $PubDirUrl = "http://example.com/wiki/pub";
Put this in Lighttpd's lighttpd.conf
:
url.rewrite-once = ( "^/wiki/([a-zA-Z0-9]+)/([a-zA-Z=?0-9.&:\-_%]+)$" => "/wiki/pmwiki.php?n=$1.$2", "^/wiki/([a-zA-Z0-9/]+)$" => "/wiki/pmwiki.php?n=Category.$1" )
Create a file called index.php
with the following contents in the same directory as pmwiki.php
:
<?php require("pmwiki.php"); ?>
`url.rewrite` rules¶
The regular expressions used above can also be rewritten to a single rule:
url.rewrite-once = ("^/([A-Z].*)" => "/pmwiki.php?n=$1")
This lets the pmwiki.php
script handle any URL that starts with a capital letter. If your wiki conforms to the de facto pmwiki standards, this should be enough.
Updated by gstrauss almost 3 years ago · 13 revisions