Project

General

Profile

Actions

HowToRewriteForPMWiki » History » Revision 9

« Previous | Revision 9/13 (diff) | Next »
Anonymous, 2008-10-04 01:22
Added alternative regular expressions for url.rewrite.


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`:

{{{

}}}

=== `url.rewrite` rules ===

The regular expressions used above can also be rewritten to a single rule: {{{
url.rewrite-once = ("^/([A-Z].*)" => "/pmwiki.php/$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 Anonymous over 15 years ago · 9 revisions