本站 wiki 栏目是用 Tikiwiki 搭建的,安装之后做了一些设置(具体记不清了)。随后几天,发现在编辑页面之后,点击“保存”按钮就出错。
例如,我们新建了一个页面名称是 Module_positions,输入内容之后,点击“保存”按钮就看到一个空白页面,上面只显示了如下的错误消息:
Not Found
The requested URL /wiki/Module_positions&saved_msg=y was not found on this server.
上次 rally 认为可能是对中文 URL 支持不够好,实际上不是,上面这个例子是我今天下午刚刚遇到的,可以看到,我用的页面标题是纯英文,而且没有空格等特殊符号,为什么还是出错?(实际上页面都已经保存了,只是无法返回那个页面去)
经过一番搜索,终于找到了原因:
在安装 Tikiwiki 之后,我当时设置功能时启用了 SEF 友好网址功能,我认为这样就可以享用 SEF 了。
但是,在那之后我一直没有看到 SEF 网址生效,也没有其它问题。后来就发生了保存页面时“Not Found”的问题,但是我没有想到可能与这个 SEF 设置有关。
在官方网站找到了答案,就是与 SEF 功能有关系。Tikiwiki 自带的 .htaccess 规则默认是在根目录下保存为 _htaccess 这个文件。如果在 Tikiwiki “设置”中启用了 SEF,就必须将将根目录下的 _htaccess 文件改名为 .htaccess。
本站的 Tikiwiki 在我启用 SEF 功能之后,当时忘记了给 _htaccess 文件改名了。
解决办法:
启用 SEF 功能之后,将 Tikiwiki 根目录下的 _htaccess 文件改名为 .htaccess 即可。
不过,Tikiwiki 的所谓 SEF 与我们已有的概念不同。Tikiwiki 的 SEF 只是“接受 SEF 形式的 URL 访问请求”,而不是“输出 SEF 形式 URL”。
举例说明:
目前已知本站 wiki 中有一个页面名称是 Module_positions,我们希望在访问该页面时,浏览器的地址栏里面显示出:
http://www.joomlagate.com/wiki/Module_positions
但实际上 Tikiwiki 目前做不到,它还是显示:
http://www.joomlagate.com/wiki/tiki-index.php?page=Module_positions
不过,如果你直接在浏览器中输入
www.joomlagate.com/wiki/Module_positions
这个地址并访问,还是能看到相同的页面。
也就是说,Tikiwiki 能够接受并解析用户输入的 SEF 网址,但是它的内部仍然继续使用 non-SEF 网址。
今晚有幸在 IRC 上面与 Tikiwiki 的开发人员聊了几句,他们说,目前 Tikiwiki 开发小组并不认为 SEF 是一个很重要的功能,他们还有很多方面期待改进,SEF 的重要性排在后面。估计在 4.0 或 5.0 版本中才会考虑全面实施 SEF,因为这需要大量的代码修改。