您几乎是在创建一个 REST 接口,但由于您想直接提供文档,所以并不完全如此。
我建议这样的结构:
http://example.com/docs/
:应用程序的根级别(显示有关应用程序的一些信息
http://example.com/docs/view/read_this
:显示名为“read_this”的文档
http://example.com/docs/search/keyword
:显示包含关键字“keyword”的文档列表
添加“视图”和“搜索”父“文件夹”可防止冲突;如果您只是http://example.com/docs/read_this
作为文档视图架构(并保留搜索架构原样),您将永远无法命名文档,因为这会与特殊术语search
冲突。search
您还提到了编辑,这可以通过http://example.com/edit/read_this
模式来完成。
为了解析所有这些 URI,您需要在 Apache 配置中使用 Mod_Rewrite 将它们指向您的 PHP 脚本。
编辑:这是.htaccess
所需的 PHP 链接
.ht 访问:
它位于文件夹的根docs
目录中,旁边是index.php
:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^([a-z]+)/([A-Za-z0-9_-]+)/?$ index.php?action=$1&target=$2 [QSA,L]
</IfModule>
这在技术上意味着人们可以输入 URLhttp://example.com/docs/view/read_this
或http://example.com/docs/index.php?action=view&target=read_this
得到相同的结果
索引.php:
<?php
$action = (isset($_GET['action']) && $_GET['action'] != '')? $_GET['action'] : false;
$target = (isset($_GET['target']) && $_GET['target'] != '')? $_GET['target'] : false;
switch($action) {
case 'view':
viewDoc($target); // Do your view logic here
break;
case 'search':
doSearch($target); // Do your search logic here
break;
case 'foobar':
// Add new functionality here
break;
default:
errorOut('No such action as '.$action);
break;
}
?>