操作
PMWiki 简洁URL与 Lighttpd¶
为 PMWiki 进行重写一点也不难。
专用虚拟主机¶
本例中使用 wiki.example.com 的虚拟主机。在启用 mod_rewrite 后,将此代码片段添加到您的 lighttpd.conf 中。
$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" ) }
我设置此代码是为了将任何一级查询 (http://wiki.example.com/group) 重定向到 Category.$1。您可以轻松更改它,将其设为 $1.$1 或 Main.$1,随您所愿。(blaster8: 我发现为了让所有使用 'lean' 主题的链接都正常,$1.HomePage 选项是 Category.$1 的最佳替代方案。)
现在,将 config.php 中的配置变量更改为以下内容
$EnablePathInfo = 1; $ScriptUrl = "http://wiki.example.com"; $PubDirUrl = "http://wiki.example.com/pub";
子目录¶
要在 `http://example.com/wiki/` 而非 `http://wiki.example.com/` 中设置 wiki,请执行以下步骤
将以下内容放入 PMWiki 的 config.php
中
$EnablePathInfo = 1; $ScriptUrl = "http://example.com/wiki"; $PubDirUrl = "http://example.com/wiki/pub";
将此内容放入 Lighttpd 的 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" )
创建一个名为 index.php
的文件,其内容如下,并将其置于与 pmwiki.php
相同的目录下
<?php require("pmwiki.php"); ?>
`url.rewrite` 规则¶
上面使用的正则表达式也可以重写为一条规则
url.rewrite-once = ("^/([A-Z].*)" => "/pmwiki.php?n=$1")
这使得 pmwiki.php
脚本能够处理任何以大写字母开头的 URL。如果您的 wiki 符合事实上的 pmwiki 标准,这应该就足够了。