项目

通用

个人资料

操作

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 标准,这应该就足够了。

更新者 gstrauss 3 年多前 · 13 次修订