我正在嵌入式设备上创建一个小应用程序,它上面运行着一个boa Web服务器.我正在创建一个混合使用纯HTML页面和Perl脚本的Web应用程序来与主应用程序进行交互.有没有办法隐藏一些页面是从设备上的cgi-bin提供的?
我现在拥有以下网址.
HTTP://localhost/home.html
HTTP://localhost/cgi-bin/config.pl
HTTP://localhost/cgi-bin/control.pl
HTTP://localhost/info.html
我更喜欢的是:
HTTP://本地主机/
HTTP://本地主机/配置/
HTTP://本地主机/控制/
HTTP://本地主机/信息/
使用上面的URL将我带到相应的index.html或index.pl文档.文件结构和服务器设置的某种组合是否会启用此行为?
我在谷歌搜索过这个,但是你可以想象我在URL中用"cgi-bin"获取搜索结果的页面和页面.我希望以前有人这样做过.
编辑:我应该提一下,我知道如何通过在我的Web根目录中创建单独的文件夹来为纯HTML页面执行此操作,所有文件夹都使用index.html页面.我的问题是让这种类型的解决方案与cgi-bin目录中的.pl或.cgi文件一起使用.
在apache中,这对mod_rewrite来说很简单,但是boa有点不同.你在这里遇到了几个不同的问题.对于.html文件,请确保boa.conf中包含以下行:
DirectoryIndex /index.html
然后在命中root时将检索任何名为index.html的文件.因此,如果您的根目录是/ htdocs,则makings /htdocs/index.html和/htdocs/info/index.html应该处理这些问题.
对于其他脚本,您需要添加以下行:
AddType application/x-httpd-cgi pl
这应该让perl在CGI执行时执行.然后是确保boa知道它们是索引文件的问题.您可以使用Redirect或Alias指令克服其中的一部分.
不幸的是,Boa似乎没有任何类型的mod_rewrite选项可供使用,所以你可以做的就是重写URL.从boa文档中可以找到您可以使用的选项:
重定向,别名和ScriptAlias
Redirect,Alias和ScriptAlias都具有相同的语义 - 它们匹配请求的开头并采取适当的操作.将Redirect用于其他服务器,将Alias用于同一服务器,使用ScriptAlias为目录执行脚本.
重定向
允许您告诉客户有关服务器命名空间中曾经存在的文档,但不再这样做了.这允许您告诉客户端在哪里查找重定位文档.
别号
别名一条路径到另一条路径.当然,文件系统中的符号链接也可以正常工作.
ScriptAlias指令
将虚拟路径映射到用于提供脚本的目录.
基于此,您可以尝试ScriptAlias或Alias,甚至是符号链接到"更好"的URL.不幸的是,由于我没有Boa可用,我无法测试选项,更具体地告诉你要尝试什么.