6

我正在嵌入式设备上创建一个小型应用程序,该设备上运行有boa Web 服务器。我正在创建一个混合了普通 HTML 页面和 Perl 脚本的 Web 应用程序,以与主应用程序交互。有没有办法隐藏某些页面是从设备上的 cgi-bin 提供的事实?

我现在拥有的是以下 URL。

我非常喜欢的是:

上面的 URL 将我带到相应的 index.html 或 index.pl 文档。是否存在文件结构和服务器设置的某种组合可以启用此行为?

我已经在 Google 上搜索过这个,但正如您所想象的那样,我正在获取 URL 中带有“cgi-bin”的搜索结果页面。我希望这里有人以前做过。

编辑:我应该提到我知道如何通过在我的 web 根目录中创建单独的文件夹来为纯 HTML 页面执行此操作,所有这些文件夹都包含 index.html 页面。我的问题是让这种类型的解决方案可以处理 cgi-bin 目录中的 .pl 或 .cgi 文件。

4

2 回答 2

7

在 apache 中,使用 mod_rewrite 会很简单,但 boa 有点不同。您在这里遇到了几个不同的问题。对于 .html 文件,请确保您在 boa.conf 中有以下行:

目录索引 /index.html

然后在访问根目录时将检索任何名为 index.html 的文件。因此,如果您的根目录是 /htdocs,那么制作 /htdocs/index.html 和 /htdocs/info/index.html 应该可以解决这些问题。

对于您的其他脚本,您需要添加以下行:

AddType application/x-httpd-cgi pl

这应该让 perl 像 CGI 一样在任何地方执行。然后是确保 boa 知道它们是索引文件的问题。您可以使用 Redirect 或 Alias 指令来克服其中的一些问题。

于 2009-01-21T18:49:12.630 回答
7

不幸的是,Boa 似乎没有任何可用的 mod_rewrite 选项,因此您在重写 URL 时可以做的事情受到限制。来自boa 文档的这里是您可以使用的选项:

重定向、别名和 ScriptAlias

Redirect、Alias 和 ScriptAlias 都具有相同的语义——它们匹配请求的开头并采取适当的操作。对其他服务器使用 Redirect,对同一服务器使用 Alias,并使用 ScriptAlias 启用目录以执行脚本。

重定向

允许您告诉客户端曾经存在于服务器命名空间中的文档,但现在不再这样做了。这允许您告诉客户在哪里寻找重新定位的文档。

别名

将一条路径别名为另一条路径。当然,文件系统中的符号链接也可以正常工作。

脚本别名

将虚拟路径映射到服务脚本的目录。

基于此,您可以尝试使用 ScriptAlias 或 Alias,甚至是指向“更好” URL 的符号链接。不幸的是,由于这里没有可用的 Boa,我无法测试这些选项来更具体地告诉您要尝试什么。

于 2009-01-21T18:50:00.180 回答