Dokuwiki 默认起始页 Start 路径隐藏

在 DokuWiki 中,start 页面通常是每个命名空间下的默认页面。如果你希望在访问一个目录路径(比如 /wiki/namespace/)时自动显示 namespace:start 页面,但 URL 中不出现 start,这其实是 DokuWiki 默认就支持的行为,前提是链接是指向目录而不是具体页面

一、确认你的配置支持“隐藏 start 页面”的行为

DokuWiki 默认会将指向 namespace:(即 /doku.php?id=namespace)的请求解析为 namespace:start,这是它的标准行为。但这个行为也依赖以下几点:


✅ 步骤 1:确认 start 页面的配置

conf/dokuwiki.php 中,有这个配置项:

$conf['start'] = 'start'; // 默认首页页面名称

只要这个设置为 start,DokuWiki 会将 namespace: 自动解析到 namespace:start


✅ 步骤 2:使用目录样式链接

  • 链接写成 [[namespace:]] 而不是 [[namespace:start]]
  • 或在浏览器中访问 https://your-site/wiki/namespace/(有时 URL 重写规则会影响)

这样,页面访问和链接都不会显示 start,但实质上是打开 namespace:start


✅ 步骤 3:启用 URL 重写(可选但推荐)

为了让链接更优雅,建议开启 URL 重写。编辑 conf/local.phpconf/dokuwiki.php

$conf['userewrite'] = 1; // 1 = 内部重写, 2 = .htaccess(推荐)

然后你需要确保 .htaccess 存在,并启用了:

RewriteEngine on
RewriteBase /wiki/
RewriteRule ^_media/(.*)              lib/exe/fetch.php?media=$1  [QSA,L]
RewriteRule ^_detail/(.*)             lib/exe/detail.php?media=$1 [QSA,L]
RewriteRule ^_export/([^/]+)/(.*)     doku.php?do=export_$1&id=$2 [QSA,L]
RewriteRule ^$                        doku.php
RewriteRule (.*)                      doku.php?id=$1              [QSA,L]

启用 URL 重写后,你可以访问:

https://example.com/wiki/namespace/

DokuWiki 会自动加载:

namespace:start

但 URL 中没有 start


✅ 步骤 4:使用 start 页面作为默认子页面(非首页)

在多个命名空间中使用 start 作为默认页面时,使用命名空间本身作为链接目标即可。例如:

[[products:]]     → 实际打开的是 [[products:start]]
[[docs:]]         → 实际打开的是 [[docs:start]]

总结

操作 效果
使用 start 作为默认页名 保持默认行为
链接使用 [[namespace:]] 显示的是 namespace:start,URL 无 start
启用 URL 重写 更优雅的链接如 /wiki/namespace/
不用修改核心代码 使用配置即可完成

如需进一步实现“点击链接始终隐藏 start”,你只需要在创建链接时省略 :start 即可,DokuWiki 会自动处理。是否需要我提供一个实际的链接示例或模板?

您说:

如果是 nginx 呢,该如何重写

ChatGPT 说:

在使用 Nginx 作为 DokuWiki 的 Web 服务器时,为了实现“隐藏 start 页面但仍能访问 namespace:start”,你需要配置 URL 重写规则来模拟 Apache 的 .htaccess 行为。

以下是一个完整的 Nginx 配置示例,假设你的 DokuWiki 安装在 /var/www/dokuwiki,URL 路径为 /wiki/


✅ Nginx 配置示例

server {
    listen 80;
    server_name your-domain.com;

    root /var/www/dokuwiki;
    index index.php;

    location /wiki/ {
        try_files $uri $uri/ @dokuwiki;
    }

    location @dokuwiki {
        rewrite ^/wiki/_media/(.*)      /lib/exe/fetch.php?media=$1 break;
        rewrite ^/wiki/_detail/(.*)     /lib/exe/detail.php?media=$1 break;
        rewrite ^/wiki/_export/([^/]+)/(.*) /doku.php?do=export_$1&id=$2 break;
        rewrite ^/wiki/(.*)             /doku.php?id=$1&$args break;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock; # 或你系统上的 PHP-FPM 套接字
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff2?|ttf|eot)$ {
        expires 30d;
        access_log off;
    }
}

✅ 配置说明

路径 行为描述
/wiki/ 匹配 DokuWiki 路径
/wiki/namespace/ 自动访问 namespace:start(隐藏 start)
/wiki/namespace/page 访问特定页面
_media/, _detail/ 正常加载媒体与详情视图
.php 文件 正常解析 PHP 页面(例如 doku.php)

✅ 配合 DokuWiki 配置使用

确保 conf/local.php 中启用了 URL 重写:

$conf['userewrite'] = 1; // 或 2 均可,配合 nginx rewrite 生效

注意:即使使用 userewrite = 2,只要你正确配置 Nginx,DokuWiki 不依赖 Apache 的 .htaccess


✅ 示例效果

链接地址 实际渲染页面
/wiki/docs/ docs:start
/wiki/docs/getting-started docs:getting-started

如果你还希望让主页(即 /wiki/)指向 start 页面,也可以加:

location = /wiki/ {
    rewrite ^ /doku.php?id=start last;
}
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇